diff --git a/src/wayland-client.c b/src/wayland-client.c index 5fecc018..5ba2c454 100644 --- a/src/wayland-client.c +++ b/src/wayland-client.c @@ -649,9 +649,12 @@ wl_display_roundtrip(struct wl_display *display) done = 0; callback = wl_display_sync(display); wl_callback_add_listener(callback, &sync_listener, &done); - while (!done && !ret) + while (!done && ret >= 0) ret = wl_display_dispatch(display); + if (ret == -1 && !done) + wl_callback_destroy(callback); + return ret; }