diff --git a/src/backends/meta-backend-private.h b/src/backends/meta-backend-private.h index 02b123d5f..d5a7ee515 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 3cfb95110..454616a83 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 f93b6f6cb..27f67df1d 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 c7440e244..d61c97589 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 fc7948e03..8b9c55f6b 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 */