|
|
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 |
|