Add convenience functions for posting display events
authorKristian Høgsberg <krh@bitplanet.net>
Fri, 3 Sep 2010 00:55:16 +0000 (20:55 -0400)
committerKristian Høgsberg <krh@bitplanet.net>
Fri, 3 Sep 2010 00:55:16 +0000 (20:55 -0400)
compositor.c
drm.c
wayland-server.c
wayland-server.h

index 1959ed2ca3466160043c2c7d0b4de464c74e2787..175e5a720437d03dbb6b39e85224fc0596ffc6ab 100644 (file)
@@ -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 d10e20b86a8cc8151e441ee298d183fee502c394..1d7bf9b4f624bb7bb37d2b26d1368e1f7191f74b 100644 (file)
--- 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;
        }
 
index eb003fc86a3501990baba216322c3fd4255500a7..1c913538756ef25bc33474d82f39d7381fb23b71 100644 (file)
@@ -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;
                }
 
@@ -233,6 +232,25 @@ wl_client_add_resource(struct wl_client *client,
        wl_list_insert(client->resource_list.prev, &resource->link);
 }
 
+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)
 {
index ee2906d7915e040d02cb52bb48554abab69480ba..5bd4b75d27cf818aecb428be9e285b66a4c846c8 100644 (file)
@@ -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;