sway

i3-compatible Wayland compositor
git clone https://git.awy.one/sway
Log | Files | Refs | README | LICENSE

commit 0f715470328cbb5be77f95c7e209ce6bace2ef19
parent 6b9ffbad20995d322748bebc4ea43cbffb070381
Author: emersion <contact@emersion.fr>
Date:   Tue,  5 Jun 2018 11:18:52 +0100

Merge pull request #2095 from emersion/fullscreen-damage-only-visible

Only send frame to visible surfaces when fullscreened
Diffstat:
Msway/desktop/output.c | 32+++++++++++++++++++++-----------
1 file changed, 21 insertions(+), 11 deletions(-)

diff --git 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]); }