64db66e
From 193e853c8b0d3c1222d7565eb209354f460cad9b Mon Sep 17 00:00:00 2001
64db66e
From: Michael Catanzaro <mcatanzaro@gnome.org>
64db66e
Date: Sat, 9 May 2015 09:59:49 -0500
64db66e
Subject: [PATCH 8/8] Don't crash when running in Wayland
64db66e
64db66e
It's wrong to use X11-specific APIs without checking:
64db66e
64db66e
* If GTK+ was compiled with support for X11
64db66e
* If the application is currently running in X11
64db66e
---
64db66e
 libempathy-gtk/empathy-avatar-image.c | 33 +++++++++++++++++++++++++++++++++
64db66e
 1 file changed, 33 insertions(+)
64db66e
64db66e
diff --git a/libempathy-gtk/empathy-avatar-image.c b/libempathy-gtk/empathy-avatar-image.c
64db66e
index 78a3e5f..1468802 100644
64db66e
--- a/libempathy-gtk/empathy-avatar-image.c
64db66e
+++ b/libempathy-gtk/empathy-avatar-image.c
64db66e
@@ -119,6 +119,19 @@ avatar_image_finalize (GObject *object)
64db66e
 	G_OBJECT_CLASS (empathy_avatar_image_parent_class)->finalize (object);
64db66e
 }
64db66e
 
64db66e
+#ifdef GDK_WINDOWING_X11
64db66e
+static gboolean
64db66e
+running_in_x11 (void)
64db66e
+{
64db66e
+	GdkDisplay* display;
64db66e
+
64db66e
+	display = gdk_display_get_default ();
64db66e
+	if (!display)
64db66e
+		return FALSE;
64db66e
+
64db66e
+	return GDK_IS_X11_DISPLAY (display);
64db66e
+}
64db66e
+
64db66e
 static GdkFilterReturn
64db66e
 avatar_image_filter_func (GdkXEvent  *gdkxevent,
64db66e
 			  GdkEvent   *event,
64db66e
@@ -128,6 +141,9 @@ avatar_image_filter_func (GdkXEvent  *gdkxevent,
64db66e
 	Atom                   atom;
64db66e
 	EmpathyAvatarImagePriv *priv;
64db66e
 
64db66e
+	if (!running_in_x11 ())
64db66e
+		return GDK_FILTER_CONTINUE;
64db66e
+
64db66e
 	priv = GET_PRIV (data);
64db66e
 
64db66e
 	if (xevent->type == PropertyNotify) {
64db66e
@@ -151,6 +167,9 @@ avatar_image_add_filter (EmpathyAvatarImage *avatar_image)
64db66e
 	gint       mask;
64db66e
 	XWindowAttributes attrs;
64db66e
 
64db66e
+	if (!running_in_x11 ())
64db66e
+		return;
64db66e
+
64db66e
 	mask = PropertyChangeMask;
64db66e
 
64db66e
 	window = gdk_x11_get_default_root_xwindow ();
64db66e
@@ -167,6 +186,20 @@ avatar_image_add_filter (EmpathyAvatarImage *avatar_image)
64db66e
 
64db66e
 	gdk_window_add_filter (NULL, avatar_image_filter_func, avatar_image);
64db66e
 }
64db66e
+#else
64db66e
+static GdkFilterReturn
64db66e
+avatar_image_filter_func (GdkXEvent  *gdkxevent,
64db66e
+			  GdkEvent   *event,
64db66e
+			  gpointer    data)
64db66e
+{
64db66e
+	return GDK_FILTER_CONTINUE;
64db66e
+}
64db66e
+
64db66e
+static void
64db66e
+avatar_image_add_filter (EmpathyAvatarImage *avatar_image)
64db66e
+{
64db66e
+}
64db66e
+#endif
64db66e
 
64db66e
 static void
64db66e
 avatar_image_remove_filter (EmpathyAvatarImage *avatar_image)
64db66e
-- 
64db66e
2.4.0
64db66e