summaryrefslogtreecommitdiff
path: root/output_layout.c
diff options
context:
space:
mode:
authorKirill Primak <[email protected]>2022-05-31 21:44:10 +0300
committerIsaac Freund <[email protected]>2022-06-01 09:49:25 +0000
commit69393d13db99e8c24e820d5e696bb6b19fd5557d (patch)
tree596d9d4adb75406aa9bce0f9a2517b0a512f49e5 /output_layout.c
parent60eff6dd7f02dbfceff444bb8921a3b29ff71c3f (diff)
scene/output-layout: add initial outputs
Diffstat (limited to 'output_layout.c')
-rw-r--r--output_layout.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/output_layout.c b/output_layout.c
index 2122311..900cabc 100644
--- a/output_layout.c
+++ b/output_layout.c
@@ -72,12 +72,8 @@ static void scene_output_layout_handle_layout_change(
}
}
-static void scene_output_layout_handle_layout_add(
- struct wl_listener *listener, void *data) {
- struct wlr_scene_output_layout *sol =
- wl_container_of(listener, sol, layout_add);
- struct wlr_output_layout_output *lo = data;
-
+static void scene_output_layout_add(struct wlr_scene_output_layout *sol,
+ struct wlr_output_layout_output *lo) {
struct wlr_scene_output_layout_output *solo = calloc(1, sizeof(*solo));
if (solo == NULL) {
return;
@@ -105,6 +101,15 @@ static void scene_output_layout_handle_layout_add(
wlr_scene_output_set_position(solo->scene_output, lo->x, lo->y);
}
+static void scene_output_layout_handle_layout_add(
+ struct wl_listener *listener, void *data) {
+ struct wlr_scene_output_layout *sol =
+ wl_container_of(listener, sol, layout_add);
+ struct wlr_output_layout_output *lo = data;
+
+ scene_output_layout_add(sol, lo);
+}
+
static void scene_output_layout_handle_layout_destroy(
struct wl_listener *listener, void *data) {
struct wlr_scene_output_layout *sol =
@@ -143,5 +148,10 @@ bool wlr_scene_attach_output_layout(struct wlr_scene *scene,
sol->scene_destroy.notify = scene_output_layout_handle_scene_destroy;
wl_signal_add(&scene->tree.node.events.destroy, &sol->scene_destroy);
+ struct wlr_output_layout_output *lo;
+ wl_list_for_each(lo, &output_layout->outputs, link) {
+ scene_output_layout_add(sol, lo);
+ }
+
return true;
}