wlr_scene: Call surface enter scale events on surface create

We would fail to call scene_node_update() which would then call output
events for us. We need to make sure to update the node when we first map
a buffer, as the comment explained.
master
Alexander Orzechowski 9 months ago
parent 50eae512d9
commit 2d97935e82

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

Loading…
Cancel
Save