On 07/18/2012 08:25 AM, [email protected] wrote:
From: Juan Zhao <[email protected]>
When the client didn't response to ping event in time, the server
will do "set_busy_cursor" again and again.
You still have the problem after fixing the infinite recursion?
ping_timeout_handler() should be called just once for each unresponsive
surface. Note that the shsurf->ping_timer is not destroyed there and
ping_handler() will only send the ping event if shsurf->ping_timer is
NULL. The value of shsurf->ping_timer is only altered in
ping_timer_destroy() that is only called from shell_surface_pong() and
destroy_shell_surface().
Can you provide the output of running weston with WAYLAND_DEBUG=1 where
this happens?
Cheers,
Ander
In fact it should only need to
set it at the first time. Because handle_pointer_focus could help to set it,
when the application was focused.
Signed-off-by: Juan Zhao <[email protected]>
---
src/shell.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/shell.c b/src/shell.c
index 9372edc..04369e8 100644
--- a/src/shell.c
+++ b/src/shell.c
@@ -911,6 +911,11 @@ ping_timeout_handler(void *data)
struct shell_surface *shsurf = data;
struct weston_seat *seat;
+ /* client is already unresponding,
+ * no need to generate extra set_cursor action */
+ if (shsurf->unresponsive)
+ return 1;
+
/* Client is not responding */
shsurf->unresponsive = 1;
_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel