[gimp] app: fix last commit: identify displays by name not by pointer



commit f741cacc2894c0d1a358781e566ad27e45c99867
Author: Michael Natterer <mitch gimp org>
Date:   Thu May 10 17:32:58 2018 +0200

    app: fix last commit: identify displays by name not by pointer
    
    Not so sure any more this belongs here at all, but it doesn't hurt
    either...

 app/widgets/gimpdevicemanager.c |   21 ++++++++++++++-------
 1 files changed, 14 insertions(+), 7 deletions(-)
---
diff --git a/app/widgets/gimpdevicemanager.c b/app/widgets/gimpdevicemanager.c
index 4598bae..89582a3 100644
--- a/app/widgets/gimpdevicemanager.c
+++ b/app/widgets/gimpdevicemanager.c
@@ -127,8 +127,9 @@ gimp_device_manager_init (GimpDeviceManager *manager)
                                                GIMP_TYPE_DEVICE_MANAGER,
                                                GimpDeviceManagerPrivate);
 
-  manager->priv->displays = g_hash_table_new (g_direct_hash,
-                                              g_direct_equal);
+  manager->priv->displays = g_hash_table_new_full (g_str_hash,
+                                                   g_str_equal,
+                                                   g_free, NULL);
 }
 
 static void
@@ -306,12 +307,15 @@ gimp_device_manager_display_opened (GdkDisplayManager *disp_manager,
 {
   GimpDeviceManagerPrivate *private = GET_PRIVATE (manager);
   GList                    *list;
+  const gchar              *display_name;
   gint                      count;
 
+  display_name = gdk_display_get_name (gdk_display);
+
   count = GPOINTER_TO_INT (g_hash_table_lookup (private->displays,
-                                                gdk_display));
+                                                display_name));
 
-  g_hash_table_insert (private->displays, gdk_display,
+  g_hash_table_insert (private->displays, g_strdup (display_name),
                        GINT_TO_POINTER (count + 1));
 
   /*  don't add the same display twice  */
@@ -338,20 +342,23 @@ gimp_device_manager_display_closed (GdkDisplay        *gdk_display,
 {
   GimpDeviceManagerPrivate *private = GET_PRIVATE (manager);
   GList                    *list;
+  const gchar              *display_name;
   gint                      count;
 
+  display_name = gdk_display_get_name (gdk_display);
+
   count = GPOINTER_TO_INT (g_hash_table_lookup (private->displays,
-                                                gdk_display));
+                                                display_name));
 
   /*  don't remove the same display twice  */
   if (count > 1)
     {
-      g_hash_table_insert (private->displays, gdk_display,
+      g_hash_table_insert (private->displays, g_strdup (display_name),
                            GINT_TO_POINTER (count - 1));
       return;
     }
 
-  g_hash_table_remove (private->displays, gdk_display);
+  g_hash_table_remove (private->displays, display_name);
 
   for (list = gdk_display_list_devices (gdk_display); list; list = list->next)
     {


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