[mutter/wip/ui-on-own-connection: 9/13] ui: Don't hang the MetaUI pointer off the GdkDisplay
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter/wip/ui-on-own-connection: 9/13] ui: Don't hang the MetaUI pointer off the GdkDisplay
- Date: Mon, 7 Apr 2014 12:29:47 +0000 (UTC)
commit bbcbf5820ffe4cb8e3a864cec7b36274ea69d06c
Author: Jasper St. Pierre <jstpierre mecheye net>
Date: Sun Apr 6 17:22:55 2014 -0400
ui: Don't hang the MetaUI pointer off the GdkDisplay
Instead, use the user_data in the filter to pass a MetaUI through.
src/ui/ui.c | 26 ++++++++++----------------
1 files changed, 10 insertions(+), 16 deletions(-)
---
diff --git a/src/ui/ui.c b/src/ui/ui.c
index 11de813..5b60927 100644
--- a/src/ui/ui.c
+++ b/src/ui/ui.c
@@ -94,12 +94,12 @@ is_input_event (XEvent *event)
*/
static gboolean
-maybe_redirect_mouse_event (XEvent *xevent)
+maybe_redirect_mouse_event (MetaUI *ui,
+ XEvent *xevent)
{
GdkDisplay *gdisplay;
GdkDeviceManager *gmanager;
GdkDevice *gdevice;
- MetaUI *ui;
GdkEvent *gevent;
GdkWindow *gdk_window;
Window window;
@@ -107,6 +107,9 @@ maybe_redirect_mouse_event (XEvent *xevent)
XIDeviceEvent *xev_d = NULL;
XIEnterEvent *xev_e = NULL;
+ if (xev->display != ui->xdisplay)
+ return FALSE;
+
if (!is_input_event (xevent))
return FALSE;
@@ -130,10 +133,6 @@ maybe_redirect_mouse_event (XEvent *xevent)
}
gdisplay = gdk_x11_lookup_xdisplay (xev->display);
- ui = g_object_get_data (G_OBJECT (gdisplay), "meta-ui");
- if (!ui)
- return FALSE;
-
gdk_window = gdk_x11_window_lookup_for_display (gdisplay, window);
if (gdk_window == NULL)
return FALSE;
@@ -227,7 +226,9 @@ ui_filter_func (GdkXEvent *xevent,
GdkEvent *event,
gpointer data)
{
- if (maybe_redirect_mouse_event (xevent))
+ MetaUI *ui = data;
+
+ if (maybe_redirect_mouse_event (ui, xevent))
return GDK_FILTER_REMOVE;
else
return GDK_FILTER_CONTINUE;
@@ -256,9 +257,7 @@ meta_ui_new (Display *xdisplay,
*/
gtk_widget_show (GTK_WIDGET (ui->frames));
- gdk_window_add_filter (NULL, ui_filter_func, NULL);
-
- g_object_set_data (G_OBJECT (gdisplay), "meta-ui", ui);
+ gdk_window_add_filter (NULL, ui_filter_func, ui);
return ui;
}
@@ -266,14 +265,9 @@ meta_ui_new (Display *xdisplay,
void
meta_ui_free (MetaUI *ui)
{
- GdkDisplay *gdisplay;
-
gtk_widget_destroy (GTK_WIDGET (ui->frames));
- gdisplay = gdk_x11_lookup_xdisplay (ui->xdisplay);
- g_object_set_data (G_OBJECT (gdisplay), "meta-ui", NULL);
-
- gdk_window_remove_filter (NULL, ui_filter_func, NULL);
+ gdk_window_remove_filter (NULL, ui_filter_func, ui);
g_free (ui);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]