shell: Make create_shell_surface() just return the shsurf
authorKristian Høgsberg <krh@bitplanet.net>
Mon, 21 May 2012 18:27:33 +0000 (14:27 -0400)
committerKristian Høgsberg <krh@bitplanet.net>
Mon, 21 May 2012 21:03:16 +0000 (17:03 -0400)
src/compositor.h
src/shell.c
src/xserver-launcher.c

index 32bccd2..7af423d 100644 (file)
@@ -58,9 +58,9 @@ struct weston_mode {
 struct weston_shell_interface {
        void *shell;                    /* either desktop or tablet */
 
-       void (*create_shell_surface)(void *shell,
-                                    struct weston_surface *surface,
-                                    struct shell_surface **ret);
+       struct shell_surface *(*create_shell_surface)(void *shell,
+                                                     struct weston_surface *surface);
+
        void (*set_toplevel)(struct shell_surface *shsurf);
 
        void (*set_transient)(struct shell_surface *shsurf,
index e23600d..d026fda 100644 (file)
@@ -1246,21 +1246,20 @@ get_shell_surface(struct weston_surface *surface)
 static void
 shell_surface_configure(struct weston_surface *, int32_t, int32_t);
 
-static void
-create_shell_surface(void *shell, struct weston_surface *surface,
-                    struct shell_surface **ret)
+static         struct shell_surface *
+create_shell_surface(void *shell, struct weston_surface *surface)
 {
        struct shell_surface *shsurf;
 
        if (surface->configure) {
                fprintf(stderr, "surface->configure already set\n");
-               return;
+               return NULL;
        }
 
        shsurf = calloc(1, sizeof *shsurf);
        if (!shsurf) {
                fprintf(stderr, "no memory to allocate shell surface\n");
-               return;
+               return NULL;
        }
 
        surface->configure = shell_surface_configure;
@@ -1295,7 +1294,7 @@ create_shell_surface(void *shell, struct weston_surface *surface,
        shsurf->type = SHELL_SURFACE_NONE;
        shsurf->next_type = SHELL_SURFACE_NONE;
 
-       *ret = shsurf;
+       return shsurf;
 }
 
 static void
@@ -1315,7 +1314,7 @@ shell_get_shell_surface(struct wl_client *client,
                return;
        }
 
-       create_shell_surface(shell, surface, &shsurf);
+       shsurf = create_shell_surface(shell, surface);
        if (!shsurf) {
               wl_resource_post_error(surface_resource,
                                      WL_DISPLAY_ERROR_INVALID_OBJECT,
index c57112b..bd162b6 100644 (file)
@@ -1957,8 +1957,9 @@ xserver_map_shell_surface(struct weston_wm *wm,
        if (!shell_interface->create_shell_surface)
                return;
 
-       shell_interface->create_shell_surface(shell_interface->shell,
-                                             window->surface, &window->shsurf);
+       window->shsurf = 
+               shell_interface->create_shell_surface(shell_interface->shell,
+                                                     window->surface);
 
        if (!window->transient_for) {
                shell_interface->set_toplevel(window->shsurf);