aboutsummaryrefslogtreecommitdiff
path: root/sway
diff options
context:
space:
mode:
Diffstat (limited to 'sway')
-rw-r--r--sway/desktop/xdg_shell.c5
-rw-r--r--sway/desktop/xwayland.c5
-rw-r--r--sway/tree/view.c3
3 files changed, 10 insertions, 3 deletions
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) {
return;
}
- view_init(&xdg_shell_view->view, SWAY_VIEW_XDG_SHELL, &view_impl);
+ if (!view_init(&xdg_shell_view->view, SWAY_VIEW_XDG_SHELL, &view_impl)) {
+ free(xdg_shell_view);
+ return;
+ }
xdg_shell_view->view.wlr_xdg_toplevel = xdg_toplevel;
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
return NULL;
}
- view_init(&xwayland_view->view, SWAY_VIEW_XWAYLAND, &view_impl);
+ if (!view_init(&xwayland_view->view, SWAY_VIEW_XWAYLAND, &view_impl)) {
+ free(xwayland_view);
+ return NULL;
+ }
xwayland_view->view.wlr_xwayland_surface = xsurface;
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 @@
#include "pango.h"
#include "stringop.h"
-void view_init(struct sway_view *view, enum sway_view_type type,
+bool view_init(struct sway_view *view, enum sway_view_type type,
const struct sway_view_impl *impl) {
view->type = type;
view->impl = impl;
@@ -44,6 +44,7 @@ void view_init(struct sway_view *view, enum sway_view_type type,
view->allow_request_urgent = true;
view->shortcuts_inhibit = SHORTCUTS_INHIBIT_DEFAULT;
wl_signal_init(&view->events.unmap);
+ return true;
}
void view_destroy(struct sway_view *view) {