shell: Make create_shell_surface() just return the shsurf
This commit is contained in:
+3
-3
@@ -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,
|
||||||
|
|||||||
+6
-7
@@ -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;
|
||||||
|
|
||||||
shell_interface->create_shell_surface(shell_interface->shell,
|
window->shsurf =
|
||||||
window->surface, &window->shsurf);
|
shell_interface->create_shell_surface(shell_interface->shell,
|
||||||
|
window->surface);
|
||||||
|
|
||||||
if (!window->transient_for) {
|
if (!window->transient_for) {
|
||||||
shell_interface->set_toplevel(window->shsurf);
|
shell_interface->set_toplevel(window->shsurf);
|
||||||
|
|||||||
Reference in New Issue
Block a user