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 | |
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
-rw-r--r-- | include/sway/output.h | 4 | ||||
-rw-r--r-- | include/sway/tree/container.h | 8 | ||||
-rw-r--r-- | sway/desktop/desktop.c | 5 | ||||
-rw-r--r-- | sway/desktop/output.c | 4 | ||||
-rw-r--r-- | sway/tree/container.c | 13 |
5 files changed, 23 insertions, 11 deletions
diff --git a/include/sway/output.h b/include/sway/output.h index 9964a484..8945dde4 100644 --- a/include/sway/output.h +++ b/include/sway/output.h | |||
@@ -37,8 +37,8 @@ void output_damage_whole(struct sway_output *output); | |||
37 | void output_damage_whole_view(struct sway_output *output, | 37 | void output_damage_whole_view(struct sway_output *output, |
38 | struct sway_view *view); | 38 | struct sway_view *view); |
39 | 39 | ||
40 | void output_damage_whole_surface(struct sway_output *output, | 40 | void output_damage_whole_rect(struct sway_output *output, double ox, double oy, |
41 | struct wlr_surface *surface, double ox, double oy); | 41 | int width, int height); |
42 | 42 | ||
43 | struct sway_container *output_by_name(const char *name); | 43 | struct sway_container *output_by_name(const char *name); |
44 | 44 | ||
diff --git a/include/sway/tree/container.h b/include/sway/tree/container.h index 3a3a9429..7acb607b 100644 --- a/include/sway/tree/container.h +++ b/include/sway/tree/container.h | |||
@@ -97,8 +97,7 @@ struct sway_container *container_create(enum sway_container_type type); | |||
97 | 97 | ||
98 | const char *container_type_to_str(enum sway_container_type type); | 98 | const char *container_type_to_str(enum sway_container_type type); |
99 | 99 | ||
100 | struct sway_container *output_create( | 100 | struct sway_container *output_create(struct sway_output *sway_output); |
101 | struct sway_output *sway_output); | ||
102 | 101 | ||
103 | /** | 102 | /** |
104 | * Create a new container container. A container container can be a a child of | 103 | * Create a new container container. A container container can be a a child of |
@@ -116,7 +115,8 @@ struct sway_container *output_create(struct sway_output *sway_output); | |||
116 | * Create a new workspace container. Workspaces are children of an output | 115 | * Create a new workspace container. Workspaces are children of an output |
117 | * container and are ordered alphabetically by name. | 116 | * container and are ordered alphabetically by name. |
118 | */ | 117 | */ |
119 | struct sway_container *workspace_create(struct sway_container *output, const char *name); | 118 | struct sway_container *workspace_create(struct sway_container *output, |
119 | const char *name); | ||
120 | 120 | ||
121 | /* | 121 | /* |
122 | * Create a new view container. A view can be a child of a workspace container | 122 | * Create a new view container. A view can be a child of a workspace container |
@@ -182,4 +182,6 @@ bool container_has_child(struct sway_container *con, | |||
182 | 182 | ||
183 | void container_create_notify(struct sway_container *container); | 183 | void container_create_notify(struct sway_container *container); |
184 | 184 | ||
185 | void container_damage_whole(struct sway_container *container); | ||
186 | |||
185 | #endif | 187 | #endif |
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 | } | ||