[mutter] MonitorXrandr: try harder to get decent product/serial IDs



commit 909a6607c52435c9cf2bef7da214eb474bd045d8
Author: Giovanni Campagna <gcampagna src gnome org>
Date:   Sun Aug 18 12:11:44 2013 +0200

    MonitorXrandr: try harder to get decent product/serial IDs
    
    If the EDID does not include free-form product name and serial
    number, use the numeric IDs instead, like gnome-desktop did.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=706233

 src/core/monitor-xrandr.c |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)
---
diff --git a/src/core/monitor-xrandr.c b/src/core/monitor-xrandr.c
index 51e480a..37dd4ca 100644
--- a/src/core/monitor-xrandr.c
+++ b/src/core/monitor-xrandr.c
@@ -455,8 +455,14 @@ meta_monitor_manager_xrandr_read_current (MetaMonitorManager *manager)
               if (parsed_edid)
                 {
                   meta_output->vendor = g_strndup (parsed_edid->manufacturer_code, 4);
-                  meta_output->product = g_strndup (parsed_edid->dsc_product_name, 14);
-                  meta_output->serial = g_strndup (parsed_edid->dsc_serial_number, 14);
+                  if (parsed_edid->dsc_product_name[0])
+                    meta_output->product = g_strndup (parsed_edid->dsc_product_name, 14);
+                  else
+                    meta_output->product = g_strdup_printf ("0x%04x", (unsigned)parsed_edid->product_code);
+                  if (parsed_edid->dsc_serial_number[0])
+                    meta_output->serial = g_strndup (parsed_edid->dsc_serial_number, 14);
+                  else
+                    meta_output->serial = g_strdup_printf ("0x%08x", parsed_edid->serial_number);
 
                   g_free (parsed_edid);
                 }


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