[mutter] mutter/wayland: Have the native backend read drm layout properties



commit 103c88bd721640743aecb4197f0a434128419d5c
Author: Thomas Hellstrom <thellstrom vmware com>
Date:   Wed Jun 3 21:50:28 2015 +0200

    mutter/wayland: Have the native backend read drm layout properties
    
    Read the drm layout properties suggested_X, suggested_Y and
    hotplug_mode_update and transfer them to the meta layer.
    
    Signed-off-by: Thomas Hellstrom <thellstrom vmware com>
    
    https://bugzilla.gnome.org/show_bug.cgi?id=750363

 src/backends/native/meta-monitor-manager-kms.c |   27 +++++++++++++++++++----
 1 files changed, 22 insertions(+), 5 deletions(-)
---
diff --git a/src/backends/native/meta-monitor-manager-kms.c b/src/backends/native/meta-monitor-manager-kms.c
index 6702a23..e95f7e5 100644
--- a/src/backends/native/meta-monitor-manager-kms.c
+++ b/src/backends/native/meta-monitor-manager-kms.c
@@ -56,6 +56,10 @@ typedef struct {
   uint32_t dpms_prop_id;
   uint32_t edid_blob_id;
   uint32_t tile_blob_id;
+
+  int suggested_x;
+  int suggested_y;
+  uint32_t hotplug_mode_update;
 } MetaOutputKms;
 
 typedef struct {
@@ -199,6 +203,9 @@ find_connector_properties (MetaMonitorManagerKms *manager_kms,
 {
   int i;
 
+  output_kms->hotplug_mode_update = 0;
+  output_kms->suggested_x = -1;
+  output_kms->suggested_y = -1;
   for (i = 0; i < output_kms->connector->count_props; i++)
     {
       drmModePropertyPtr prop = drmModeGetProperty (manager_kms->fd, output_kms->connector->props[i]);
@@ -209,10 +216,19 @@ find_connector_properties (MetaMonitorManagerKms *manager_kms,
         output_kms->dpms_prop_id = prop->prop_id;
       else if ((prop->flags & DRM_MODE_PROP_BLOB) && strcmp (prop->name, "EDID") == 0)
         output_kms->edid_blob_id = output_kms->connector->prop_values[i];
-     else if ((prop->flags & DRM_MODE_PROP_BLOB) &&
+      else if ((prop->flags & DRM_MODE_PROP_BLOB) &&
                strcmp (prop->name, "TILE") == 0)
         output_kms->tile_blob_id = output_kms->connector->prop_values[i];
-
+      else if ((prop->flags & DRM_MODE_PROP_RANGE) &&
+               strcmp (prop->name, "suggested X") == 0)
+        output_kms->suggested_x = output_kms->connector->prop_values[i];
+      else if ((prop->flags & DRM_MODE_PROP_RANGE) &&
+               strcmp (prop->name, "suggested Y") == 0)
+        output_kms->suggested_y = output_kms->connector->prop_values[i];
+      else if ((prop->flags & DRM_MODE_PROP_RANGE) &&
+               strcmp (prop->name, "hotplug_mode_update") == 0)
+        output_kms->hotplug_mode_update = output_kms->connector->prop_values[i];
+      
       drmModeFreeProperty (prop);
     }
 }
@@ -561,8 +577,6 @@ meta_monitor_manager_kms_read_current (MetaMonitorManager *manager)
          meta_output->name = make_output_name (connector);
          meta_output->width_mm = connector->mmWidth;
          meta_output->height_mm = connector->mmHeight;
-         meta_output->suggested_x = -1;
-         meta_output->suggested_y = -1;
 
           switch (connector->subpixel)
             {
@@ -657,7 +671,10 @@ meta_monitor_manager_kms_read_current (MetaMonitorManager *manager)
             }
 
           find_connector_properties (manager_kms, output_kms);
-
+          meta_output->suggested_x = output_kms->suggested_x;
+          meta_output->suggested_y = output_kms->suggested_y;
+          meta_output->hotplug_mode_update = output_kms->hotplug_mode_update;
+          
           edid = read_output_edid (manager_kms, meta_output);
           meta_output_parse_edid (meta_output, edid);
           g_bytes_unref (edid);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]