[mutter] display: cancel wayland client touches when the compositor is grabbed
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] display: cancel wayland client touches when the compositor is grabbed
- Date: Thu, 24 Jul 2014 17:15:40 +0000 (UTC)
commit 70aee2d95e945a6c40273877138fb45a10db5c11
Author: Carlos Garnacho <carlosg gnome org>
Date: Tue Jul 22 02:07:19 2014 +0200
display: cancel wayland client touches when the compositor is grabbed
When a compositor grab begins, clients will stop receiving events, so any
ongoing sequence at that time must be cancelled.
https://bugzilla.gnome.org/show_bug.cgi?id=733631
src/compositor/compositor.c | 7 +++++--
src/core/display-private.h | 2 ++
src/core/display.c | 7 +++++--
3 files changed, 12 insertions(+), 4 deletions(-)
---
diff --git a/src/compositor/compositor.c b/src/compositor/compositor.c
index 3e5a205..5cbbea5 100644
--- a/src/compositor/compositor.c
+++ b/src/compositor/compositor.c
@@ -74,7 +74,7 @@
#include "meta-window-group.h"
#include "meta-stage.h"
#include "window-private.h" /* to check window->hidden */
-#include "display-private.h" /* for meta_display_lookup_x_window() */
+#include "display-private.h" /* for meta_display_lookup_x_window() and meta_display_cancel_touch() */
#include "util-private.h"
#include "frame.h"
#include <X11/extensions/shape.h>
@@ -365,7 +365,10 @@ meta_begin_modal_for_plugin (MetaCompositor *compositor,
display->grab_window, display->grab_op);
if (meta_is_wayland_compositor ())
- meta_display_sync_wayland_input_focus (display);
+ {
+ meta_display_sync_wayland_input_focus (display);
+ meta_display_cancel_touch (display);
+ }
return TRUE;
}
diff --git a/src/core/display-private.h b/src/core/display-private.h
index 44d0878..606440e 100644
--- a/src/core/display-private.h
+++ b/src/core/display-private.h
@@ -454,4 +454,6 @@ gboolean meta_display_request_restart (MetaDisplay *display);
void meta_restart_init (void);
void meta_restart_finish (void);
+void meta_display_cancel_touch (MetaDisplay *display);
+
#endif
diff --git a/src/core/display.c b/src/core/display.c
index 9012210..77a9f5d 100644
--- a/src/core/display.c
+++ b/src/core/display.c
@@ -461,7 +461,7 @@ meta_set_gnome_wm_keybindings (const char *wm_keybindings)
gnome_wm_keybindings = wm_keybindings;
}
-static void
+void
meta_display_cancel_touch (MetaDisplay *display)
{
MetaWaylandCompositor *compositor;
@@ -1869,7 +1869,10 @@ meta_display_begin_grab_op (MetaDisplay *display,
display->grab_anchor_window_pos = display->grab_initial_window_pos;
if (meta_is_wayland_compositor ())
- meta_display_sync_wayland_input_focus (display);
+ {
+ meta_display_sync_wayland_input_focus (display);
+ meta_display_cancel_touch (display);
+ }
g_signal_emit (display, display_signals[GRAB_OP_BEGIN], 0,
screen, display->grab_window, display->grab_op);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]