diff options
Diffstat (limited to 'src/wayland/meta-pointer-confinement-wayland.c')
-rw-r--r-- | src/wayland/meta-pointer-confinement-wayland.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/wayland/meta-pointer-confinement-wayland.c b/src/wayland/meta-pointer-confinement-wayland.c index 01c7d3ff3..ae6679b61 100644 --- a/src/wayland/meta-pointer-confinement-wayland.c +++ b/src/wayland/meta-pointer-confinement-wayland.c @@ -46,6 +46,7 @@ #include "wayland/meta-wayland-pointer.h" #include "wayland/meta-wayland-seat.h" #include "wayland/meta-wayland-surface.h" +#include "wayland/meta-wayland.h" typedef struct _MetaPointerConfinementWaylandPrivate MetaPointerConfinementWaylandPrivate; @@ -68,6 +69,18 @@ G_DEFINE_TYPE_WITH_PRIVATE (MetaPointerConfinementWayland, meta_pointer_confinement_wayland, G_TYPE_OBJECT) +static MetaBackend * +backend_from_confinement (MetaPointerConfinementWayland *confinement) +{ + MetaPointerConfinementWaylandPrivate *priv = + meta_pointer_confinement_wayland_get_instance_private (confinement); + MetaWaylandCompositor *compositor = + meta_wayland_pointer_constraint_get_compositor (priv->constraint); + MetaContext *context = meta_wayland_compositor_get_context (compositor); + + return meta_context_get_backend (context); +} + static void meta_pointer_confinement_wayland_update (MetaPointerConfinementWayland *self) { @@ -75,7 +88,8 @@ meta_pointer_confinement_wayland_update (MetaPointerConfinementWayland *self) constraint = META_POINTER_CONFINEMENT_WAYLAND_GET_CLASS (self)->create_constraint (self); - meta_backend_set_client_pointer_constraint (meta_get_backend (), constraint); + meta_backend_set_client_pointer_constraint (backend_from_confinement (self), + constraint); g_object_unref (constraint); } @@ -134,6 +148,7 @@ meta_pointer_confinement_wayland_disable (MetaPointerConfinementWayland *confine MetaWaylandPointerConstraint *constraint; MetaWaylandSurface *surface; MetaWindow *window; + MetaBackend *backend; priv = meta_pointer_confinement_wayland_get_instance_private (confinement); constraint = priv->constraint; @@ -151,7 +166,8 @@ meta_pointer_confinement_wayland_disable (MetaPointerConfinementWayland *confine confinement); } - meta_backend_set_client_pointer_constraint (meta_get_backend (), NULL); + backend = backend_from_confinement (confinement); + meta_backend_set_client_pointer_constraint (backend, NULL); } static void |