diff options
author | emersion <contact@emersion.fr> | 2018-04-05 18:31:19 -0400 |
---|---|---|
committer | emersion <contact@emersion.fr> | 2018-04-05 18:31:19 -0400 |
commit | 076bedb85eface4a6c41a0e99059c89186bdb275 (patch) | |
tree | 9390c5c41be12daa0e5443416d7868a8f59ea569 /sway | |
parent | Add damage tracking for xwayland unmanaged surfaces (diff) | |
download | sway-076bedb85eface4a6c41a0e99059c89186bdb275.tar.gz sway-076bedb85eface4a6c41a0e99059c89186bdb275.tar.zst sway-076bedb85eface4a6c41a0e99059c89186bdb275.zip |
Add container_damage_whole
Diffstat (limited to 'sway')
-rw-r--r-- | sway/desktop/desktop.c | 5 | ||||
-rw-r--r-- | sway/desktop/output.c | 4 | ||||
-rw-r--r-- | sway/tree/container.c | 13 |
3 files changed, 16 insertions, 6 deletions
diff --git a/sway/desktop/desktop.c b/sway/desktop/desktop.c index 78a2d49f..c23d988c 100644 --- a/sway/desktop/desktop.c +++ b/sway/desktop/desktop.c | |||
@@ -7,8 +7,9 @@ void desktop_damage_whole_surface(struct wlr_surface *surface, double lx, | |||
7 | for (int i = 0; i < root_container.children->length; ++i) { | 7 | for (int i = 0; i < root_container.children->length; ++i) { |
8 | struct sway_container *cont = root_container.children->items[i]; | 8 | struct sway_container *cont = root_container.children->items[i]; |
9 | if (cont->type == C_OUTPUT) { | 9 | if (cont->type == C_OUTPUT) { |
10 | output_damage_whole_surface(cont->sway_output, surface, | 10 | output_damage_whole_rect(cont->sway_output, |
11 | lx - cont->x, ly - cont->y); | 11 | lx - cont->x, ly - cont->y, |
12 | surface->current->width, surface->current->height); | ||
12 | } | 13 | } |
13 | } | 14 | } |
14 | } | 15 | } |
diff --git a/sway/desktop/output.c b/sway/desktop/output.c index 0ae5e782..09244460 100644 --- a/sway/desktop/output.c +++ b/sway/desktop/output.c | |||
@@ -341,8 +341,8 @@ void output_damage_whole_view(struct sway_output *output, | |||
341 | output_damage_whole(output); | 341 | output_damage_whole(output); |
342 | } | 342 | } |
343 | 343 | ||
344 | void output_damage_whole_surface(struct sway_output *output, | 344 | void output_damage_whole_rect(struct sway_output *output, |
345 | struct wlr_surface *surface, double ox, double oy) { | 345 | double ox, double oy, int width, int height) { |
346 | // TODO | 346 | // TODO |
347 | output_damage_whole(output); | 347 | output_damage_whole(output); |
348 | } | 348 | } |
diff --git a/sway/tree/container.c b/sway/tree/container.c index 8fc9e3e8..1450db6d 100644 --- a/sway/tree/container.c +++ b/sway/tree/container.c | |||
@@ -512,9 +512,18 @@ static bool find_child_func(struct sway_container *con, void *data) { | |||
512 | 512 | ||
513 | bool container_has_child(struct sway_container *con, | 513 | bool container_has_child(struct sway_container *con, |
514 | struct sway_container *child) { | 514 | struct sway_container *child) { |
515 | if (con == NULL || con->type == C_VIEW || | 515 | if (con == NULL || con->type == C_VIEW || con->children->length == 0) { |
516 | con->children->length == 0) { | ||
517 | return false; | 516 | return false; |
518 | } | 517 | } |
519 | return container_find(con, find_child_func, child); | 518 | return container_find(con, find_child_func, child); |
520 | } | 519 | } |
520 | |||
521 | void container_damage_whole(struct sway_container *con) { | ||
522 | struct sway_container *output = con; | ||
523 | if (output->type != C_OUTPUT) { | ||
524 | output = container_parent(output, C_OUTPUT); | ||
525 | } | ||
526 | |||
527 | output_damage_whole_rect(output->sway_output, con->x, con->y, con->width, | ||
528 | con->height); | ||
529 | } | ||