diff options
author | emersion <contact@emersion.fr> | 2018-06-05 11:18:52 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-06-05 11:18:52 +0100 |
commit | 0f715470328cbb5be77f95c7e209ce6bace2ef19 (patch) | |
tree | 13ee137d7e5b71d119357898c6c1529aa653931a /sway/desktop | |
parent | 6b9ffbad20995d322748bebc4ea43cbffb070381 (diff) | |
parent | 34bdf25bb5af5f36568e0af8b6a95f2c93552d07 (diff) | |
download | sway-0f715470328cbb5be77f95c7e209ce6bace2ef19.tar.xz |
Merge pull request #2095 from emersion/fullscreen-damage-only-visible
Only send frame to visible surfaces when fullscreened
Diffstat (limited to 'sway/desktop')
-rw-r--r-- | sway/desktop/output.c | 32 |
1 files changed, 21 insertions, 11 deletions
diff --git a/sway/desktop/output.c b/sway/desktop/output.c index 3fa586d0..acc9caae 100644 --- a/sway/desktop/output.c +++ b/sway/desktop/output.c @@ -988,20 +988,30 @@ static void send_frame_done(struct sway_output *output, struct timespec *when) { .when = when, }; - send_frame_done_layer(&data, - &output->layers[ZWLR_LAYER_SHELL_V1_LAYER_BACKGROUND]); - send_frame_done_layer(&data, - &output->layers[ZWLR_LAYER_SHELL_V1_LAYER_BOTTOM]); - struct sway_container *workspace = output_get_active_workspace(output); - send_frame_done_container(&data, workspace); - send_frame_done_container(&data, workspace->sway_workspace->floating); + if (workspace->sway_workspace->fullscreen) { + send_frame_done_container_iterator( + workspace->sway_workspace->fullscreen->swayc, &data); + + if (workspace->sway_workspace->fullscreen->type == SWAY_VIEW_XWAYLAND) { + send_frame_done_unmanaged(&data, + &root_container.sway_root->xwayland_unmanaged); + } + } else { + send_frame_done_layer(&data, + &output->layers[ZWLR_LAYER_SHELL_V1_LAYER_BACKGROUND]); + send_frame_done_layer(&data, + &output->layers[ZWLR_LAYER_SHELL_V1_LAYER_BOTTOM]); - send_frame_done_unmanaged(&data, - &root_container.sway_root->xwayland_unmanaged); + send_frame_done_container(&data, workspace); + send_frame_done_container(&data, workspace->sway_workspace->floating); + + send_frame_done_unmanaged(&data, + &root_container.sway_root->xwayland_unmanaged); + send_frame_done_layer(&data, + &output->layers[ZWLR_LAYER_SHELL_V1_LAYER_TOP]); + } - send_frame_done_layer(&data, - &output->layers[ZWLR_LAYER_SHELL_V1_LAYER_TOP]); send_frame_done_layer(&data, &output->layers[ZWLR_LAYER_SHELL_V1_LAYER_OVERLAY]); } |