scene: simplify scene_node_update() condition when setting buffer

This commit is contained in:
Simon Ser 2024-03-12 12:11:35 +01:00
parent 2d97935e82
commit c79ed0706d
1 changed files with 10 additions and 11 deletions

View File

@ -666,17 +666,16 @@ void wlr_scene_buffer_set_buffer_with_damage(struct wlr_scene_buffer *scene_buff
// coordinates. // coordinates.
assert(buffer || !damage); assert(buffer || !damage);
bool update = false; bool mapped = buffer != NULL;
if (buffer) { bool prev_mapped = scene_buffer->buffer != NULL || scene_buffer->texture != NULL;
// if this node used to not be mapped or its previous displayed
// buffer region will be different from what the new buffer would // if this node used to not be mapped or its previous displayed
// produce we need to update the node. // buffer region will be different from what the new buffer would
update = (!scene_buffer->buffer && !scene_buffer->texture) || // produce we need to update the node.
(scene_buffer->dst_width == 0 && scene_buffer->dst_height == 0 && bool update = mapped != prev_mapped;
(scene_buffer->buffer_width != buffer->width || if (buffer != NULL && scene_buffer->dst_width == 0 && scene_buffer->dst_height == 0) {
scene_buffer->buffer_height != buffer->height)); update = update || scene_buffer->buffer_width != buffer->width ||
} else { scene_buffer->buffer_height != buffer->height;
update = true;
} }
wlr_texture_destroy(scene_buffer->texture); wlr_texture_destroy(scene_buffer->texture);