[gtk+] X11: Don't assume all displays are X11 displays



commit 32326f826ffacd525d62a8a11d66f017a7d8ebe2
Author: Matthias Clasen <mclasen redhat com>
Date:   Fri Oct 24 18:38:15 2014 -0400

    X11: Don't assume all displays are X11 displays
    
    When iterating over the list of displays gotten from the
    display manager, we have to check if what we got is actually
    an X11 display.

 gdk/x11/gdkdisplay-x11.c |    8 ++++++--
 gdk/x11/gdkmain-x11.c    |    3 ++-
 2 files changed, 8 insertions(+), 3 deletions(-)
---
diff --git a/gdk/x11/gdkdisplay-x11.c b/gdk/x11/gdkdisplay-x11.c
index 064b56f..a964e2a 100644
--- a/gdk/x11/gdkdisplay-x11.c
+++ b/gdk/x11/gdkdisplay-x11.c
@@ -1947,7 +1947,8 @@ gdk_x11_lookup_xdisplay (Display *xdisplay)
 
   for (l = list; l; l = l->next)
     {
-      if (GDK_DISPLAY_XDISPLAY (l->data) == xdisplay)
+      if (GDK_IS_X11_DISPLAY (l->data) &&
+          GDK_DISPLAY_XDISPLAY (l->data) == xdisplay)
         {
           display = l->data;
           break;
@@ -2801,7 +2802,10 @@ gdk_x11_set_sm_client_id (const gchar *sm_client_id)
 
   displays = gdk_display_manager_list_displays (gdk_display_manager_get ());
   for (l = displays; l; l = l->next)
-    set_sm_client_id (l->data, sm_client_id);
+    {
+      if (GDK_IS_X11_DISPLAY (l->data))
+        set_sm_client_id (l->data, sm_client_id);
+    }
 
   g_slist_free (displays);
 }
diff --git a/gdk/x11/gdkmain-x11.c b/gdk/x11/gdkmain-x11.c
index 22c7b95..9ab7c24 100644
--- a/gdk/x11/gdkmain-x11.c
+++ b/gdk/x11/gdkmain-x11.c
@@ -279,7 +279,8 @@ gdk_x_error (Display         *xdisplay,
         {
           GdkX11Display *gdk_display = displays->data;
 
-          if (xdisplay == gdk_display->xdisplay)
+          if (GDK_IS_X11_DISPLAY (gdk_display) &&
+              xdisplay == gdk_display->xdisplay)
             {
               error_display = GDK_DISPLAY (gdk_display);
               g_slist_free (displays);


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