diff options
-rw-r--r-- | compositor.c | 22 | ||||
-rw-r--r-- | drm.c | 4 | ||||
-rw-r--r-- | wayland-server.c | 22 | ||||
-rw-r--r-- | wayland-server.h | 2 |
4 files changed, 28 insertions, 22 deletions
diff --git a/compositor.c b/compositor.c index 1959ed2..175e5a7 100644 --- a/compositor.c +++ b/compositor.c @@ -590,14 +590,11 @@ static void shell_create_drag(struct wl_client *client, struct wl_shell *shell, uint32_t id) { - struct wl_display *display = wl_client_get_display(client); struct wl_drag *drag; drag = malloc(sizeof *drag); if (drag == NULL) { - wl_client_post_event(client, - (struct wl_object *) display, - WL_DISPLAY_NO_MEMORY); + wl_client_post_no_memory(client); return; } @@ -627,9 +624,7 @@ compositor_create_surface(struct wl_client *client, surface = wlsc_surface_create(ec, NULL, 0, 0, 0, 0); if (surface == NULL) { - wl_client_post_event(client, - (struct wl_object *) ec->wl_display, - WL_DISPLAY_NO_MEMORY); + wl_client_post_no_memory(client); return; } @@ -1065,12 +1060,8 @@ wl_drag_set_pointer_focus(struct wl_drag *drag, if (surface && (!drag->pointer_focus || drag->pointer_focus->client != surface->base.client)) { - wl_surface_post_event(&surface->base, - (struct wl_object *) surface->compositor->wl_display, - WL_DISPLAY_GLOBAL, - &drag->drag_offer.base, - drag->drag_offer.base.interface->name, - drag->drag_offer.base.interface->version); + wl_client_post_global(surface->base.client, + &drag->drag_offer.base); end = drag->types.data + drag->types.size; for (p = drag->types.data; p < end; p++) @@ -1138,16 +1129,13 @@ static const struct wl_drag_offer_interface drag_offer_interface = { static void drag_offer(struct wl_client *client, struct wl_drag *drag, const char *type) { - struct wl_display *display = wl_client_get_display (client); char **p; p = wl_array_add(&drag->types, sizeof *p); if (p) *p = strdup(type); if (!p || !*p) - wl_client_post_event(client, - (struct wl_object *) display, - WL_DISPLAY_NO_MEMORY); + wl_client_post_no_memory(client); } static void @@ -93,9 +93,7 @@ drm_create_buffer(struct wl_client *client, struct wl_drm *drm_base, buffer = malloc(sizeof *buffer); if (buffer == NULL) { - wl_client_post_event(client, - (struct wl_object *) compositor->wl_display, - WL_DISPLAY_NO_MEMORY, 0); + wl_client_post_no_memory(client); return; } diff --git a/wayland-server.c b/wayland-server.c index eb003fc..1c91353 100644 --- a/wayland-server.c +++ b/wayland-server.c @@ -139,8 +139,7 @@ wl_client_connection_data(int fd, uint32_t mask, void *data) p[0], opcode); continue; } else if (closure == NULL && errno == ENOMEM) { - wl_client_post_event(client, &client->display->base, - WL_DISPLAY_NO_MEMORY); + wl_client_post_no_memory(client); continue; } @@ -234,6 +233,25 @@ wl_client_add_resource(struct wl_client *client, } WL_EXPORT void +wl_client_post_no_memory(struct wl_client *client) +{ + wl_client_post_event(client, + &client->display->base, + WL_DISPLAY_NO_MEMORY); +} + +WL_EXPORT void +wl_client_post_global(struct wl_client *client, struct wl_object *object) +{ + wl_client_post_event(client, + &client->display->base, + WL_DISPLAY_GLOBAL, + object, + object->interface->name, + object->interface->version); +} + +WL_EXPORT void wl_resource_destroy(struct wl_resource *resource, struct wl_client *client) { struct wl_display *display = client->display; diff --git a/wayland-server.h b/wayland-server.h index ee2906d..5bd4b75 100644 --- a/wayland-server.h +++ b/wayland-server.h @@ -91,6 +91,8 @@ typedef void (*wl_client_connect_func_t)(struct wl_client *client, struct wl_obj int wl_display_add_global(struct wl_display *display, struct wl_object *object, wl_client_connect_func_t func); void wl_client_destroy(struct wl_client *client); +void wl_client_post_no_memory(struct wl_client *client); +void wl_client_post_global(struct wl_client *client, struct wl_object *object); struct wl_compositor { struct wl_object base; |