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:
@@ -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 >
|
||||
|
||||
Reference in New Issue
Block a user