diff --git a/src/compositor.h b/src/compositor.h index 32bccd25..7af423dd 100644 --- a/src/compositor.h +++ b/src/compositor.h @@ -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, diff --git a/src/shell.c b/src/shell.c index e23600d6..d026fda0 100644 --- a/src/shell.c +++ b/src/shell.c @@ -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, diff --git a/src/xserver-launcher.c b/src/xserver-launcher.c index c57112be..bd162b67 100644 --- a/src/xserver-launcher.c +++ b/src/xserver-launcher.c @@ -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);