mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2026-04-10 08:21:24 -04:00
scene: don't assign outputs to invisible nodes
If a node has no visible areas, leave active_outputs empty.
Fixes: 95b2771bfd ("scene: ignore outputs with too small intersection with nodes")
This commit is contained in:
parent
9119b8aa85
commit
8611aa8440
1 changed files with 42 additions and 39 deletions
|
|
@ -426,6 +426,7 @@ static void update_node_update_outputs(struct wlr_scene_node *node,
|
||||||
size_t count = 0;
|
size_t count = 0;
|
||||||
uint64_t active_outputs = 0;
|
uint64_t active_outputs = 0;
|
||||||
|
|
||||||
|
if (!pixman_region32_empty(&node->visible)) {
|
||||||
uint32_t visible_area = region_area(&node->visible);
|
uint32_t visible_area = region_area(&node->visible);
|
||||||
|
|
||||||
// let's update the outputs in two steps:
|
// let's update the outputs in two steps:
|
||||||
|
|
@ -470,6 +471,7 @@ static void update_node_update_outputs(struct wlr_scene_node *node,
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (old_primary_output != scene_buffer->primary_output) {
|
if (old_primary_output != scene_buffer->primary_output) {
|
||||||
scene_buffer->prev_feedback_options =
|
scene_buffer->prev_feedback_options =
|
||||||
|
|
@ -479,6 +481,7 @@ static void update_node_update_outputs(struct wlr_scene_node *node,
|
||||||
uint64_t old_active = scene_buffer->active_outputs;
|
uint64_t old_active = scene_buffer->active_outputs;
|
||||||
scene_buffer->active_outputs = active_outputs;
|
scene_buffer->active_outputs = active_outputs;
|
||||||
|
|
||||||
|
struct wlr_scene_output *scene_output;
|
||||||
wl_list_for_each(scene_output, outputs, link) {
|
wl_list_for_each(scene_output, outputs, link) {
|
||||||
uint64_t mask = 1ull << scene_output->index;
|
uint64_t mask = 1ull << scene_output->index;
|
||||||
bool intersects = active_outputs & mask;
|
bool intersects = active_outputs & mask;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue