shell: Make create_shell_surface() just return the shsurf

dev
Kristian Høgsberg 13 years ago
parent e829a87a88
commit 45ba869ff3
  1. 6
      src/compositor.h
  2. 13
      src/shell.c
  3. 3
      src/xserver-launcher.c

@ -58,9 +58,9 @@ struct weston_mode {
struct weston_shell_interface { struct weston_shell_interface {
void *shell; /* either desktop or tablet */ void *shell; /* either desktop or tablet */
void (*create_shell_surface)(void *shell, struct shell_surface *(*create_shell_surface)(void *shell,
struct weston_surface *surface, struct weston_surface *surface);
struct shell_surface **ret);
void (*set_toplevel)(struct shell_surface *shsurf); void (*set_toplevel)(struct shell_surface *shsurf);
void (*set_transient)(struct shell_surface *shsurf, void (*set_transient)(struct shell_surface *shsurf,

@ -1246,21 +1246,20 @@ get_shell_surface(struct weston_surface *surface)
static void static void
shell_surface_configure(struct weston_surface *, int32_t, int32_t); shell_surface_configure(struct weston_surface *, int32_t, int32_t);
static void static struct shell_surface *
create_shell_surface(void *shell, struct weston_surface *surface, create_shell_surface(void *shell, struct weston_surface *surface)
struct shell_surface **ret)
{ {
struct shell_surface *shsurf; struct shell_surface *shsurf;
if (surface->configure) { if (surface->configure) {
fprintf(stderr, "surface->configure already set\n"); fprintf(stderr, "surface->configure already set\n");
return; return NULL;
} }
shsurf = calloc(1, sizeof *shsurf); shsurf = calloc(1, sizeof *shsurf);
if (!shsurf) { if (!shsurf) {
fprintf(stderr, "no memory to allocate shell surface\n"); fprintf(stderr, "no memory to allocate shell surface\n");
return; return NULL;
} }
surface->configure = shell_surface_configure; surface->configure = shell_surface_configure;
@ -1295,7 +1294,7 @@ create_shell_surface(void *shell, struct weston_surface *surface,
shsurf->type = SHELL_SURFACE_NONE; shsurf->type = SHELL_SURFACE_NONE;
shsurf->next_type = SHELL_SURFACE_NONE; shsurf->next_type = SHELL_SURFACE_NONE;
*ret = shsurf; return shsurf;
} }
static void static void
@ -1315,7 +1314,7 @@ shell_get_shell_surface(struct wl_client *client,
return; return;
} }
create_shell_surface(shell, surface, &shsurf); shsurf = create_shell_surface(shell, surface);
if (!shsurf) { if (!shsurf) {
wl_resource_post_error(surface_resource, wl_resource_post_error(surface_resource,
WL_DISPLAY_ERROR_INVALID_OBJECT, WL_DISPLAY_ERROR_INVALID_OBJECT,

@ -1957,8 +1957,9 @@ xserver_map_shell_surface(struct weston_wm *wm,
if (!shell_interface->create_shell_surface) if (!shell_interface->create_shell_surface)
return; return;
window->shsurf =
shell_interface->create_shell_surface(shell_interface->shell, shell_interface->create_shell_surface(shell_interface->shell,
window->surface, &window->shsurf); window->surface);
if (!window->transient_for) { if (!window->transient_for) {
shell_interface->set_toplevel(window->shsurf); shell_interface->set_toplevel(window->shsurf);

Loading…
Cancel
Save