[mutter] backend-x11: Take the touch grab on the stage window
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] backend-x11: Take the touch grab on the stage window
- Date: Mon, 14 Jul 2014 21:24:40 +0000 (UTC)
commit 3b85e4b2b911740d9f9dea672aa0e673b841e701
Author: Jasper St. Pierre <jstpierre mecheye net>
Date: Mon Jul 14 17:23:22 2014 -0400
backend-x11: Take the touch grab on the stage window
So we don't get assert fails when touching the screen on mutter nested.
src/backends/meta-backend-private.h | 1 +
src/backends/meta-backend.c | 12 ++++++++++++
src/backends/meta-backend.h | 2 ++
src/backends/x11/meta-backend-x11.c | 11 ++++++++---
src/core/display.c | 2 ++
5 files changed, 25 insertions(+), 3 deletions(-)
---
diff --git a/src/backends/meta-backend-private.h b/src/backends/meta-backend-private.h
index 02b123d..d5a7ee5 100644
--- a/src/backends/meta-backend-private.h
+++ b/src/backends/meta-backend-private.h
@@ -50,6 +50,7 @@ struct _MetaBackendClass
GObjectClass parent_class;
void (* post_init) (MetaBackend *backend);
+ void (* compositor_created) (MetaBackend *backend);
MetaIdleMonitor * (* create_idle_monitor) (MetaBackend *backend,
int device_id);
diff --git a/src/backends/meta-backend.c b/src/backends/meta-backend.c
index 3cfb951..454616a 100644
--- a/src/backends/meta-backend.c
+++ b/src/backends/meta-backend.c
@@ -79,6 +79,11 @@ meta_backend_real_post_init (MetaBackend *backend)
priv->cursor_renderer = META_BACKEND_GET_CLASS (backend)->create_cursor_renderer (backend);
}
+static void
+meta_backend_real_compositor_created (MetaBackend *backend)
+{
+}
+
static MetaCursorRenderer *
meta_backend_real_create_cursor_renderer (MetaBackend *backend)
{
@@ -114,6 +119,7 @@ meta_backend_class_init (MetaBackendClass *klass)
klass->create_cursor_renderer = meta_backend_real_create_cursor_renderer;
klass->grab_device = meta_backend_real_grab_device;
klass->ungrab_device = meta_backend_real_ungrab_device;
+ klass->compositor_created = meta_backend_real_compositor_created;
}
static void
@@ -145,6 +151,12 @@ meta_backend_post_init (MetaBackend *backend)
META_BACKEND_GET_CLASS (backend)->post_init (backend);
}
+void
+meta_backend_compositor_created (MetaBackend *backend)
+{
+ META_BACKEND_GET_CLASS (backend)->compositor_created (backend);
+}
+
MetaIdleMonitor *
meta_backend_get_idle_monitor (MetaBackend *backend,
int device_id)
diff --git a/src/backends/meta-backend.h b/src/backends/meta-backend.h
index f93b6f6..27f67df 100644
--- a/src/backends/meta-backend.h
+++ b/src/backends/meta-backend.h
@@ -38,6 +38,8 @@ GType meta_backend_get_type (void);
MetaBackend * meta_get_backend (void);
+void meta_backend_compositor_created (MetaBackend *backend);
+
MetaIdleMonitor * meta_backend_get_idle_monitor (MetaBackend *backend,
int device_id);
MetaMonitorManager * meta_backend_get_monitor_manager (MetaBackend *backend);
diff --git a/src/backends/x11/meta-backend-x11.c b/src/backends/x11/meta-backend-x11.c
index c7440e2..d61c975 100644
--- a/src/backends/x11/meta-backend-x11.c
+++ b/src/backends/x11/meta-backend-x11.c
@@ -266,7 +266,7 @@ take_touch_grab (MetaBackend *backend)
XISetMask (mask.mask, XI_TouchEnd);
XIGrabTouchBegin (priv->xdisplay, META_VIRTUAL_CORE_POINTER_ID,
- DefaultRootWindow (priv->xdisplay),
+ meta_backend_x11_get_xwindow (x11),
False, &mask, 1, &mods);
}
@@ -307,11 +307,15 @@ meta_backend_x11_post_init (MetaBackend *backend)
meta_fatal ("X server doesn't have the XInput extension, version 2.2 or newer\n");
}
- take_touch_grab (backend);
-
META_BACKEND_CLASS (meta_backend_x11_parent_class)->post_init (backend);
}
+static void
+meta_backend_x11_compositor_created (MetaBackend *backend)
+{
+ take_touch_grab (backend);
+}
+
static MetaIdleMonitor *
meta_backend_x11_create_idle_monitor (MetaBackend *backend,
int device_id)
@@ -408,6 +412,7 @@ meta_backend_x11_class_init (MetaBackendX11Class *klass)
MetaBackendClass *backend_class = META_BACKEND_CLASS (klass);
backend_class->post_init = meta_backend_x11_post_init;
+ backend_class->compositor_created = meta_backend_x11_compositor_created;
backend_class->create_idle_monitor = meta_backend_x11_create_idle_monitor;
backend_class->create_monitor_manager = meta_backend_x11_create_monitor_manager;
backend_class->create_cursor_renderer = meta_backend_x11_create_cursor_renderer;
diff --git a/src/core/display.c b/src/core/display.c
index fc7948e..8b9c55f 100644
--- a/src/core/display.c
+++ b/src/core/display.c
@@ -822,6 +822,8 @@ meta_display_open (void)
enable_compositor (display);
+ meta_backend_compositor_created (meta_get_backend ());
+
meta_screen_create_guard_window (screen);
/* Set up touch support */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]