From: Kristian Høgsberg Date: Tue, 6 Aug 2013 17:15:35 +0000 (-0700) Subject: server: Set client->error when we fail to send a closure X-Git-Tag: 1.2.91~44 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=dbeb5134fa8e612826d7c7d5b9146e89822c59fb;p=platform%2Fupstream%2Fwayland.git server: Set client->error when we fail to send a closure We we're using wl_event_loop_add_idle() here, but if we're failing because of OOM, that will typically also fail. Instead, use the existing client->error flag, which will break out of the event handling loop and shut down the client. --- diff --git a/src/wayland-server.c b/src/wayland-server.c index b74f87a..824f9d1 100644 --- a/src/wayland-server.c +++ b/src/wayland-server.c @@ -116,14 +116,6 @@ struct wl_resource { static int wl_debug = 0; -static void -destroy_client(void *data) -{ - struct wl_client *client = data; - - wl_client_destroy(client); -} - WL_EXPORT void wl_resource_post_event(struct wl_resource *resource, uint32_t opcode, ...) { @@ -137,13 +129,12 @@ wl_resource_post_event(struct wl_resource *resource, uint32_t opcode, ...) va_end(ap); if (closure == NULL) { - resource->client->error = 1 + resource->client->error = 1; return; } if (wl_closure_send(closure, resource->client->connection)) - wl_event_loop_add_idle(resource->client->display->loop, - destroy_client, resource->client); + resource->client->error = 1; if (wl_debug) wl_closure_print(closure, object, true); @@ -165,13 +156,12 @@ wl_resource_queue_event(struct wl_resource *resource, uint32_t opcode, ...) va_end(ap); if (closure == NULL) { - resource->client->error = 1 + resource->client->error = 1; return; } if (wl_closure_queue(closure, resource->client->connection)) - wl_event_loop_add_idle(resource->client->display->loop, - destroy_client, resource->client); + resource->client->error = 1; if (wl_debug) wl_closure_print(closure, object, true);