diff --git a/include/labwc.h b/include/labwc.h index 7691c9d0..8f5aa989 100644 --- a/include/labwc.h +++ b/include/labwc.h @@ -188,13 +188,14 @@ struct server { struct menu *menu_current; }; +#define LAB_NR_LAYERS (4) struct output { struct wl_list link; /* server::outputs */ struct server *server; struct wlr_output *wlr_output; struct wlr_scene_output *scene_output; - struct wl_list layers[4]; - struct wlr_scene_tree *layer_tree[4]; + struct wl_list layers[LAB_NR_LAYERS]; + struct wlr_scene_tree *layer_tree[LAB_NR_LAYERS]; struct wlr_box usable_area; struct lab_data_buffer *osd_buffer; @@ -202,6 +203,7 @@ struct output { struct wl_listener destroy; struct wl_listener frame; }; +#undef LAB_NR_LAYERS enum view_type { LAB_XDG_SHELL_VIEW, diff --git a/include/layers.h b/include/layers.h index 033b89fd..f7d3f2b2 100644 --- a/include/layers.h +++ b/include/layers.h @@ -7,8 +7,6 @@ struct server; struct output; -#define LAB_NR_LAYERS (4) - struct lab_layer_surface { struct wl_list link; /* output::layers */ struct wlr_scene_layer_surface_v1 *scene_layer_surface; diff --git a/src/layers.c b/src/layers.c index 2cdba567..1d6b2b6d 100644 --- a/src/layers.c +++ b/src/layers.c @@ -34,7 +34,8 @@ layers_arrange(struct output *output) return; } - for (int i = 0; i < LAB_NR_LAYERS; i++) { + int nr_layers = sizeof(output->layers) / sizeof(output->layers[0]); + for (int i = 0; i < nr_layers; i++) { struct lab_layer_surface *lab_layer_surface; wl_list_for_each(lab_layer_surface, &output->layers[i], link) { struct wlr_scene_layer_surface_v1 *scene_layer_surface = diff --git a/src/output.c b/src/output.c index 215a2611..c9981af3 100644 --- a/src/output.c +++ b/src/output.c @@ -111,7 +111,8 @@ new_output_notify(struct wl_listener *listener, void *data) output->frame.notify = output_frame_notify; wl_signal_add(&wlr_output->events.frame, &output->frame); - for (int i = 0; i < LAB_NR_LAYERS; i++) { + int nr_layers = sizeof(output->layers) / sizeof(output->layers[0]); + for (int i = 0; i < nr_layers; i++) { wl_list_init(&output->layers[i]); output->layer_tree[i] = wlr_scene_tree_create(&server->scene->node);