[gimp] app: fix last commit: identify displays by name not by pointer
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: fix last commit: identify displays by name not by pointer
- Date: Thu, 10 May 2018 15:34:01 +0000 (UTC)
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]