[mutter] monitor: Add getter for EDID MD5 checksum



commit 8446cd9f4f53550ab0fbd38b0ba3eea4ef6bf653
Author: Jonas Ã…dahl <jadahl gmail com>
Date:   Tue Oct 26 11:27:56 2021 +0200

    monitor: Add getter for EDID MD5 checksum
    
    Will be used for colord device matching.
    
    Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2141>

 src/backends/meta-monitor.c | 9 +++++++++
 src/backends/meta-monitor.h | 2 ++
 src/backends/meta-output.c  | 8 +++++++-
 src/backends/meta-output.h  | 3 +++
 4 files changed, 21 insertions(+), 1 deletion(-)
---
diff --git a/src/backends/meta-monitor.c b/src/backends/meta-monitor.c
index 3ad02ee3ad..e002f9d937 100644
--- a/src/backends/meta-monitor.c
+++ b/src/backends/meta-monitor.c
@@ -473,6 +473,15 @@ meta_monitor_get_serial (MetaMonitor *monitor)
   return output_info->serial;
 }
 
+const char *
+meta_monitor_get_edid_checksum_md5 (MetaMonitor *monitor)
+{
+  const MetaOutputInfo *output_info =
+    meta_monitor_get_main_output_info (monitor);
+
+  return output_info->edid_checksum_md5;
+}
+
 MetaConnectorType
 meta_monitor_get_connector_type (MetaMonitor *monitor)
 {
diff --git a/src/backends/meta-monitor.h b/src/backends/meta-monitor.h
index 4d61f1d4bc..b24eaabfb6 100644
--- a/src/backends/meta-monitor.h
+++ b/src/backends/meta-monitor.h
@@ -155,6 +155,8 @@ const char * meta_monitor_get_product (MetaMonitor *monitor);
 META_EXPORT_TEST
 const char * meta_monitor_get_serial (MetaMonitor *monitor);
 
+const char * meta_monitor_get_edid_checksum_md5 (MetaMonitor *monitor);
+
 META_EXPORT_TEST
 MetaConnectorType meta_monitor_get_connector_type (MetaMonitor *monitor);
 
diff --git a/src/backends/meta-output.c b/src/backends/meta-output.c
index a02feca90f..551be67e8e 100644
--- a/src/backends/meta-output.c
+++ b/src/backends/meta-output.c
@@ -94,6 +94,7 @@ meta_output_info_unref (MetaOutputInfo *output_info)
       g_free (output_info->vendor);
       g_free (output_info->product);
       g_free (output_info->serial);
+      g_free (output_info->edid_checksum_md5);
       g_free (output_info->modes);
       g_free (output_info->possible_crtcs);
       g_free (output_info->possible_clones);
@@ -310,11 +311,16 @@ meta_output_info_parse_edid (MetaOutputInfo *output_info,
 {
   MetaEdidInfo *parsed_edid;
   size_t len;
+  gconstpointer data;
 
   if (!edid)
     goto out;
 
-  parsed_edid = meta_edid_info_new_parse (g_bytes_get_data (edid, &len));
+  data = g_bytes_get_data (edid, &len);
+  parsed_edid = meta_edid_info_new_parse (data);
+
+  output_info->edid_checksum_md5 = g_compute_checksum_for_data (G_CHECKSUM_MD5,
+                                                                data, len);
 
   if (parsed_edid)
     {
diff --git a/src/backends/meta-output.h b/src/backends/meta-output.h
index 9970a7a450..02ec0fa092 100644
--- a/src/backends/meta-output.h
+++ b/src/backends/meta-output.h
@@ -84,6 +84,9 @@ typedef struct _MetaOutputInfo
   char *vendor;
   char *product;
   char *serial;
+
+  char *edid_checksum_md5;
+
   int width_mm;
   int height_mm;
   CoglSubpixelOrder subpixel_order;


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