diff options
-rw-r--r-- | include/sway/tree/view.h | 2 | ||||
-rw-r--r-- | sway/desktop/xdg_shell.c | 5 | ||||
-rw-r--r-- | sway/desktop/xwayland.c | 5 | ||||
-rw-r--r-- | sway/tree/view.c | 3 |
4 files changed, 11 insertions, 4 deletions
diff --git a/include/sway/tree/view.h b/include/sway/tree/view.h index 856651a5..822e7bb3 100644 --- a/include/sway/tree/view.h +++ b/include/sway/tree/view.h | |||
@@ -311,7 +311,7 @@ void view_for_each_popup_surface(struct sway_view *view, | |||
311 | 311 | ||
312 | // view implementation | 312 | // view implementation |
313 | 313 | ||
314 | void view_init(struct sway_view *view, enum sway_view_type type, | 314 | bool view_init(struct sway_view *view, enum sway_view_type type, |
315 | const struct sway_view_impl *impl); | 315 | const struct sway_view_impl *impl); |
316 | 316 | ||
317 | void view_destroy(struct sway_view *view); | 317 | void view_destroy(struct sway_view *view); |
diff --git a/sway/desktop/xdg_shell.c b/sway/desktop/xdg_shell.c index 63a0835b..11c112be 100644 --- a/sway/desktop/xdg_shell.c +++ b/sway/desktop/xdg_shell.c | |||
@@ -548,7 +548,10 @@ void handle_xdg_shell_toplevel(struct wl_listener *listener, void *data) { | |||
548 | return; | 548 | return; |
549 | } | 549 | } |
550 | 550 | ||
551 | view_init(&xdg_shell_view->view, SWAY_VIEW_XDG_SHELL, &view_impl); | 551 | if (!view_init(&xdg_shell_view->view, SWAY_VIEW_XDG_SHELL, &view_impl)) { |
552 | free(xdg_shell_view); | ||
553 | return; | ||
554 | } | ||
552 | xdg_shell_view->view.wlr_xdg_toplevel = xdg_toplevel; | 555 | xdg_shell_view->view.wlr_xdg_toplevel = xdg_toplevel; |
553 | 556 | ||
554 | xdg_shell_view->map.notify = handle_map; | 557 | xdg_shell_view->map.notify = handle_map; |
diff --git a/sway/desktop/xwayland.c b/sway/desktop/xwayland.c index 2c6184fd..8f79b5e7 100644 --- a/sway/desktop/xwayland.c +++ b/sway/desktop/xwayland.c | |||
@@ -796,7 +796,10 @@ struct sway_xwayland_view *create_xwayland_view(struct wlr_xwayland_surface *xsu | |||
796 | return NULL; | 796 | return NULL; |
797 | } | 797 | } |
798 | 798 | ||
799 | view_init(&xwayland_view->view, SWAY_VIEW_XWAYLAND, &view_impl); | 799 | if (!view_init(&xwayland_view->view, SWAY_VIEW_XWAYLAND, &view_impl)) { |
800 | free(xwayland_view); | ||
801 | return NULL; | ||
802 | } | ||
800 | xwayland_view->view.wlr_xwayland_surface = xsurface; | 803 | xwayland_view->view.wlr_xwayland_surface = xsurface; |
801 | 804 | ||
802 | wl_signal_add(&xsurface->events.destroy, &xwayland_view->destroy); | 805 | wl_signal_add(&xsurface->events.destroy, &xwayland_view->destroy); |
diff --git a/sway/tree/view.c b/sway/tree/view.c index 00dc4721..d62a0667 100644 --- a/sway/tree/view.c +++ b/sway/tree/view.c | |||
@@ -35,7 +35,7 @@ | |||
35 | #include "pango.h" | 35 | #include "pango.h" |
36 | #include "stringop.h" | 36 | #include "stringop.h" |
37 | 37 | ||
38 | void view_init(struct sway_view *view, enum sway_view_type type, | 38 | bool view_init(struct sway_view *view, enum sway_view_type type, |
39 | const struct sway_view_impl *impl) { | 39 | const struct sway_view_impl *impl) { |
40 | view->type = type; | 40 | view->type = type; |
41 | view->impl = impl; | 41 | view->impl = impl; |
@@ -44,6 +44,7 @@ void view_init(struct sway_view *view, enum sway_view_type type, | |||
44 | view->allow_request_urgent = true; | 44 | view->allow_request_urgent = true; |
45 | view->shortcuts_inhibit = SHORTCUTS_INHIBIT_DEFAULT; | 45 | view->shortcuts_inhibit = SHORTCUTS_INHIBIT_DEFAULT; |
46 | wl_signal_init(&view->events.unmap); | 46 | wl_signal_init(&view->events.unmap); |
47 | return true; | ||
47 | } | 48 | } |
48 | 49 | ||
49 | void view_destroy(struct sway_view *view) { | 50 | void view_destroy(struct sway_view *view) { |