If the grab surface happens to be unresponsive, the busy cursor grab
will be started and that will cause the grab surface to receive focus,
which in turn leads to it being pingged again. Break the cycle by not
sending pings to it. If the shell is unresponsive it won't be able to
set the busy cursor anyway.
---
 src/shell.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/src/shell.c b/src/shell.c
index 66c9d64..74d4e1b 100644
--- a/src/shell.c
+++ b/src/shell.c
@@ -918,6 +918,9 @@ ping_handler(struct weston_surface *surface, uint32_t 
serial)
        if (!shsurf->resource.client)
                return;
 
+       if (shsurf->surface == shsurf->shell->grab_surface)
+               return;
+
        if (!shsurf->ping_timer) {
                shsurf->ping_timer = malloc(sizeof *shsurf->ping_timer);
                if (!shsurf->ping_timer)
-- 
1.7.4.1

_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to