[gnome-desktop] gnome-rr: Add gnome_rr_output_get_ids_from_edid()



commit db122d9fdd503a9327f4207ebfcf78d9e7d2e3d8
Author: Bastien Nocera <hadess hadess net>
Date:   Tue May 29 15:15:32 2012 +0100

    gnome-rr: Add gnome_rr_output_get_ids_from_edid()
    
    To get the vendor/product/serial triplet from an output's EDID data.
    This is useful for output matching in gnome-settings-daemon.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=677031

 libgnome-desktop/gnome-rr.c |   29 +++++++++++++++++++++++++++++
 libgnome-desktop/gnome-rr.h |    4 ++++
 2 files changed, 33 insertions(+), 0 deletions(-)
---
diff --git a/libgnome-desktop/gnome-rr.c b/libgnome-desktop/gnome-rr.c
index daffedf..c6139c9 100644
--- a/libgnome-desktop/gnome-rr.c
+++ b/libgnome-desktop/gnome-rr.c
@@ -41,6 +41,7 @@
 #include "gnome-rr-config.h"
 
 #include "private.h"
+#include "edid.h"
 #include "gnome-rr-private.h"
 
 #define DISPLAY(o) ((o)->info->screen->priv->xdisplay)
@@ -1706,6 +1707,34 @@ gnome_rr_output_get_edid_data (GnomeRROutput *output, gsize *size)
     return output->edid_data;
 }
 
+gboolean
+gnome_rr_output_get_ids_from_edid (GnomeRROutput         *output,
+                                   char                 **vendor,
+                                   int                   *product,
+                                   int                   *serial)
+{
+    MonitorInfo *info;
+
+    g_return_val_if_fail (output != NULL, FALSE);
+
+    if (!output->edid_data)
+        return FALSE;
+    info = decode_edid (output->edid_data);
+    if (!info)
+        return FALSE;
+    if (vendor)
+        *vendor = g_memdup (info->manufacturer_code, 4);
+    if (product)
+        *product = info->product_code;
+    if (serial)
+        *serial = info->serial_number;
+
+    g_free (info);
+
+    return TRUE;
+
+}
+
 /**
  * gnome_rr_output_get_backlight_min:
  *
diff --git a/libgnome-desktop/gnome-rr.h b/libgnome-desktop/gnome-rr.h
index 38e5fb5..b6ea42e 100644
--- a/libgnome-desktop/gnome-rr.h
+++ b/libgnome-desktop/gnome-rr.h
@@ -154,6 +154,10 @@ int             gnome_rr_output_get_width_mm       (GnomeRROutput         *outou
 int             gnome_rr_output_get_height_mm      (GnomeRROutput         *output);
 const guint8 *  gnome_rr_output_get_edid_data      (GnomeRROutput         *output,
                                                     gsize                 *size);
+gboolean        gnome_rr_output_get_ids_from_edid  (GnomeRROutput         *output,
+                                                    char                 **vendor,
+                                                    int                   *product,
+                                                    int                   *serial);
 
 gint            gnome_rr_output_get_backlight_min  (GnomeRROutput         *output);
 gint            gnome_rr_output_get_backlight_max  (GnomeRROutput         *output);



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