diff --git a/src/wayland-client.c b/src/wayland-client.c index 21ef5b04..55838cd9 100644 --- a/src/wayland-client.c +++ b/src/wayland-client.c @@ -258,7 +258,6 @@ wl_event_queue_release(struct wl_event_queue *queue) { struct wl_closure *closure; struct wl_proxy *proxy; - bool proxy_destroyed; while (!wl_list_empty(&queue->event_list)) { closure = container_of(queue->event_list.next, @@ -268,10 +267,8 @@ wl_event_queue_release(struct wl_event_queue *queue) decrease_closure_args_refcount(closure); proxy = closure->proxy; - proxy_destroyed = !!(proxy->flags & WL_PROXY_FLAG_DESTROYED); - proxy->refcount--; - if (proxy_destroyed && !proxy->refcount) + if (!proxy->refcount) free(proxy); wl_closure_destroy(closure); @@ -1310,10 +1307,10 @@ dispatch_event(struct wl_display *display, struct wl_event_queue *queue) proxy_destroyed = !!(proxy->flags & WL_PROXY_FLAG_DESTROYED); proxy->refcount--; - if (proxy_destroyed) { - if (!proxy->refcount) - free(proxy); + if (!proxy->refcount) + free(proxy); + if (proxy_destroyed) { wl_closure_destroy(closure); return; }