diff options
author | David96 <david@hameipe.de> | 2019-12-03 16:03:38 +0100 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2020-04-10 10:45:47 +0200 |
commit | 8c6227820754f2bb09ebda3676dcf7a43722ff64 (patch) | |
tree | 63e68c2e9f78d44287f7a451e57c93d1872a5551 /sway/desktop/render.c | |
parent | output: remove damage listeners in damage destroy (diff) | |
download | sway-8c6227820754f2bb09ebda3676dcf7a43722ff64.tar.gz sway-8c6227820754f2bb09ebda3676dcf7a43722ff64.tar.zst sway-8c6227820754f2bb09ebda3676dcf7a43722ff64.zip |
Render layer shell popups over the top layer
Diffstat (limited to 'sway/desktop/render.c')
-rw-r--r-- | sway/desktop/render.c | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/sway/desktop/render.c b/sway/desktop/render.c index 477034fc..14753df2 100644 --- a/sway/desktop/render.c +++ b/sway/desktop/render.c | |||
@@ -156,13 +156,23 @@ static void render_surface_iterator(struct sway_output *output, struct sway_view | |||
156 | wlr_output); | 156 | wlr_output); |
157 | } | 157 | } |
158 | 158 | ||
159 | static void render_layer(struct sway_output *output, | 159 | static void render_layer_toplevel(struct sway_output *output, |
160 | pixman_region32_t *damage, struct wl_list *layer_surfaces) { | 160 | pixman_region32_t *damage, struct wl_list *layer_surfaces) { |
161 | struct render_data data = { | 161 | struct render_data data = { |
162 | .damage = damage, | 162 | .damage = damage, |
163 | .alpha = 1.0f, | 163 | .alpha = 1.0f, |
164 | }; | 164 | }; |
165 | output_layer_for_each_surface(output, layer_surfaces, | 165 | output_layer_for_each_surface_toplevel(output, layer_surfaces, |
166 | render_surface_iterator, &data); | ||
167 | } | ||
168 | |||
169 | static void render_layer_popups(struct sway_output *output, | ||
170 | pixman_region32_t *damage, struct wl_list *layer_surfaces) { | ||
171 | struct render_data data = { | ||
172 | .damage = damage, | ||
173 | .alpha = 1.0f, | ||
174 | }; | ||
175 | output_layer_for_each_surface_popup(output, layer_surfaces, | ||
166 | render_surface_iterator, &data); | 176 | render_surface_iterator, &data); |
167 | } | 177 | } |
168 | 178 | ||
@@ -1041,9 +1051,9 @@ void output_render(struct sway_output *output, struct timespec *when, | |||
1041 | wlr_renderer_clear(renderer, clear_color); | 1051 | wlr_renderer_clear(renderer, clear_color); |
1042 | } | 1052 | } |
1043 | 1053 | ||
1044 | render_layer(output, damage, | 1054 | render_layer_toplevel(output, damage, |
1045 | &output->layers[ZWLR_LAYER_SHELL_V1_LAYER_BACKGROUND]); | 1055 | &output->layers[ZWLR_LAYER_SHELL_V1_LAYER_BACKGROUND]); |
1046 | render_layer(output, damage, | 1056 | render_layer_toplevel(output, damage, |
1047 | &output->layers[ZWLR_LAYER_SHELL_V1_LAYER_BOTTOM]); | 1057 | &output->layers[ZWLR_LAYER_SHELL_V1_LAYER_BOTTOM]); |
1048 | 1058 | ||
1049 | render_workspace(output, damage, workspace, workspace->current.focused); | 1059 | render_workspace(output, damage, workspace, workspace->current.focused); |
@@ -1051,7 +1061,14 @@ void output_render(struct sway_output *output, struct timespec *when, | |||
1051 | #if HAVE_XWAYLAND | 1061 | #if HAVE_XWAYLAND |
1052 | render_unmanaged(output, damage, &root->xwayland_unmanaged); | 1062 | render_unmanaged(output, damage, &root->xwayland_unmanaged); |
1053 | #endif | 1063 | #endif |
1054 | render_layer(output, damage, | 1064 | render_layer_toplevel(output, damage, |
1065 | &output->layers[ZWLR_LAYER_SHELL_V1_LAYER_TOP]); | ||
1066 | |||
1067 | render_layer_popups(output, damage, | ||
1068 | &output->layers[ZWLR_LAYER_SHELL_V1_LAYER_BACKGROUND]); | ||
1069 | render_layer_popups(output, damage, | ||
1070 | &output->layers[ZWLR_LAYER_SHELL_V1_LAYER_BOTTOM]); | ||
1071 | render_layer_popups(output, damage, | ||
1055 | &output->layers[ZWLR_LAYER_SHELL_V1_LAYER_TOP]); | 1072 | &output->layers[ZWLR_LAYER_SHELL_V1_LAYER_TOP]); |
1056 | } | 1073 | } |
1057 | 1074 | ||
@@ -1064,7 +1081,9 @@ void output_render(struct sway_output *output, struct timespec *when, | |||
1064 | } | 1081 | } |
1065 | 1082 | ||
1066 | render_overlay: | 1083 | render_overlay: |
1067 | render_layer(output, damage, | 1084 | render_layer_toplevel(output, damage, |
1085 | &output->layers[ZWLR_LAYER_SHELL_V1_LAYER_OVERLAY]); | ||
1086 | render_layer_popups(output, damage, | ||
1068 | &output->layers[ZWLR_LAYER_SHELL_V1_LAYER_OVERLAY]); | 1087 | &output->layers[ZWLR_LAYER_SHELL_V1_LAYER_OVERLAY]); |
1069 | render_drag_icons(output, damage, &root->drag_icons); | 1088 | render_drag_icons(output, damage, &root->drag_icons); |
1070 | 1089 | ||