aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFurkan Sahin <furkan-dev@proton.me>2026-01-06 00:19:57 +0100
committerFurkan Sahin <furkan-dev@proton.me>2026-01-06 00:19:57 +0100
commit5c5da9bdce7d9e6ee327ae0aae4290cbc46f2e1b (patch)
tree2c9e9010ce436da187a7b08fc0e38f953f1f5b6a
parent9e468fa0118632b5d6d5e22191260e948e815d3d (diff)
Use goto-based error handling in view_init()
This is less surprising than checking for the failed flag in the happy path.
-rw-r--r--sway/tree/view.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/sway/tree/view.c b/sway/tree/view.c
index be813be9..7fd06697 100644
--- a/sway/tree/view.c
+++ b/sway/tree/view.c
@@ -43,20 +43,17 @@ bool view_init(struct sway_view *view, enum sway_view_type type,
bool failed = false;
view->scene_tree = alloc_scene_tree(root->staging, &failed);
view->content_tree = alloc_scene_tree(view->scene_tree, &failed);
+ if (failed) {
+ goto err;
+ }
- if (!failed && !scene_descriptor_assign(&view->scene_tree->node,
- SWAY_SCENE_DESC_VIEW, view)) {
- failed = true;
+ if (!scene_descriptor_assign(&view->scene_tree->node, SWAY_SCENE_DESC_VIEW, view)) {
+ goto err;
}
view->image_capture_scene = wlr_scene_create();
if (view->image_capture_scene == NULL) {
- failed = true;
- }
-
- if (failed) {
- wlr_scene_node_destroy(&view->scene_tree->node);
- return false;
+ goto err;
}
view->type = type;
@@ -67,6 +64,10 @@ bool view_init(struct sway_view *view, enum sway_view_type type,
view->tearing_mode = TEARING_WINDOW_HINT;
wl_signal_init(&view->events.unmap);
return true;
+
+err:
+ wlr_scene_node_destroy(&view->scene_tree->node);
+ return false;
}
void view_destroy(struct sway_view *view) {