--- src/compositor-drm.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+)
diff --git a/src/compositor-drm.c b/src/compositor-drm.c index da1ba79..61ef97e 100644 --- a/src/compositor-drm.c +++ b/src/compositor-drm.c @@ -139,6 +139,7 @@ struct drm_output { int pipe; uint32_t connector_id; drmModeCrtcPtr original_crtc; + drmModePropertyBlobPtr edid_blob; int vblank_pending; int page_flip_pending; @@ -1011,6 +1012,9 @@ drm_output_destroy(struct weston_output *output_base) (struct drm_compositor *) output->base.compositor; drmModeCrtcPtr origcrtc = output->original_crtc; + if (output->edid_blob) + drmModeFreePropertyBlob(output->edid_blob); + if (output->backlight) backlight_destroy(output->backlight); @@ -1499,6 +1503,7 @@ create_output_for_connector(struct drm_compositor *ec, drmModeEncoder *encoder; drmModeModeInfo crtc_mode; drmModeCrtc *crtc; + drmModePropertyPtr property; int i; char name[32]; const char *type_name; @@ -1642,6 +1647,27 @@ create_output_for_connector(struct drm_compositor *ec, wl_list_insert(ec->base.output_list.prev, &output->base.link); + /* find the EDID blob */ + for (i = 0; i < connector->count_props && !output->edid_blob; i++) { + property = drmModeGetProperty(ec->drm.fd, connector->props[i]); + if (!property) + continue; + if ((property->flags & DRM_MODE_PROP_BLOB) && + !strcmp(property->name, "EDID")) { + output->edid_blob = drmModeGetPropertyBlob(ec->drm.fd, + connector->prop_values[i]); + } + drmModeFreeProperty(property); + } + + /* parse the EDID blob */ + if (output->edid_blob) { + weston_log("Got EDID blob %p of size %u.\n", + output->edid_blob->data, + output->edid_blob->length); + /* FIXME: actually parse EDID */ + } + output->base.origin = output->base.current; output->base.start_repaint_loop = drm_output_start_repaint_loop; output->base.repaint = drm_output_repaint; -- 1.8.2 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel