From 909a6607c52435c9cf2bef7da214eb474bd045d8 Mon Sep 17 00:00:00 2001 From: Giovanni Campagna Date: Sun, 18 Aug 2013 12:11:44 +0200 Subject: [PATCH] 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 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/core/monitor-xrandr.c b/src/core/monitor-xrandr.c index 51e480a77..37dd4ca0b 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); }