summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--compositor.c22
-rw-r--r--drm.c4
-rw-r--r--wayland-server.c22
-rw-r--r--wayland-server.h2
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
diff --git a/drm.c b/drm.c
index d10e20b..1d7bf9b 100644
--- a/drm.c
+++ b/drm.c
@@ -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;