gsk: Don't notify surface properties during render

The offloading may change subsurface stacking order, and thereby
change the effective dmabuf formats of the surface. But we don't
want to trigger callbacks during frame processing, so delay the
change notification until after we're done with that.
This commit is contained in:
Matthias Clasen
2024-02-07 09:40:42 +00:00
parent 349a29bb49
commit d0c9c66c38

View File

@@ -483,6 +483,12 @@ gsk_renderer_render (GskRenderer *renderer,
if (priv->surface == NULL)
return;
/* Offloading can change subsurface stacking, which may trigger
* surface property changes. We don't want them to take effect
* during frame processing.
*/
g_object_freeze_notify (G_OBJECT (priv->surface));
renderer_class = GSK_RENDERER_GET_CLASS (renderer);
clip = cairo_region_copy (region);
@@ -528,6 +534,8 @@ gsk_renderer_render (GskRenderer *renderer,
cairo_region_destroy (clip);
g_clear_pointer (&offload, gsk_offload_free);
priv->prev_node = gsk_render_node_ref (root);
g_object_thaw_notify (G_OBJECT (priv->surface));
}
/*< private >