mirror of
https://github.com/brl/mutter.git
synced 2024-11-21 23:50:41 -05:00
window-actor: Make freezing and thawing of actor updates public API
As explained in the last commit, gnome-shell needs to be able to thaw window actor updates during its size-change effect is active. So make meta_window_actor_freeze() and meta_window_actor_thaw() public API, which will allow the shell to freeze and thaw actor updates itself. https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1250
This commit is contained in:
parent
d12dc993d1
commit
fb474fb612
@ -272,11 +272,23 @@ meta_window_actor_set_frozen (MetaWindowActor *self,
|
|||||||
META_WINDOW_ACTOR_GET_CLASS (self)->set_frozen (self, frozen);
|
META_WINDOW_ACTOR_GET_CLASS (self)->set_frozen (self, frozen);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
/**
|
||||||
|
* meta_window_actor_freeze:
|
||||||
|
* @self: The #MetaWindowActor
|
||||||
|
*
|
||||||
|
* Freezes the #MetaWindowActor, which inhibits updates and geometry
|
||||||
|
* changes of the window. This property is refcounted, so make sure
|
||||||
|
* to call meta_window_actor_thaw() the exact same amount of times
|
||||||
|
* as this function to allow updates again.
|
||||||
|
*/
|
||||||
|
void
|
||||||
meta_window_actor_freeze (MetaWindowActor *self)
|
meta_window_actor_freeze (MetaWindowActor *self)
|
||||||
{
|
{
|
||||||
MetaWindowActorPrivate *priv =
|
MetaWindowActorPrivate *priv;
|
||||||
meta_window_actor_get_instance_private (self);
|
|
||||||
|
g_return_if_fail (META_IS_WINDOW_ACTOR (self));
|
||||||
|
|
||||||
|
priv = meta_window_actor_get_instance_private (self);
|
||||||
|
|
||||||
if (priv->freeze_count == 0 && priv->surface)
|
if (priv->freeze_count == 0 && priv->surface)
|
||||||
meta_window_actor_set_frozen (self, TRUE);
|
meta_window_actor_set_frozen (self, TRUE);
|
||||||
@ -300,11 +312,21 @@ meta_window_actor_sync_thawed_state (MetaWindowActor *self)
|
|||||||
meta_window_actor_sync_actor_geometry (self, FALSE);
|
meta_window_actor_sync_actor_geometry (self, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
/**
|
||||||
|
* meta_window_actor_thaw:
|
||||||
|
* @self: The #MetaWindowActor
|
||||||
|
*
|
||||||
|
* Thaws/unfreezes the #MetaWindowActor to allow updates and geometry
|
||||||
|
* changes after a window was frozen using meta_window_actor_freeze().
|
||||||
|
*/
|
||||||
|
void
|
||||||
meta_window_actor_thaw (MetaWindowActor *self)
|
meta_window_actor_thaw (MetaWindowActor *self)
|
||||||
{
|
{
|
||||||
MetaWindowActorPrivate *priv =
|
MetaWindowActorPrivate *priv;
|
||||||
meta_window_actor_get_instance_private (self);
|
|
||||||
|
g_return_if_fail (META_IS_WINDOW_ACTOR (self));
|
||||||
|
|
||||||
|
priv = meta_window_actor_get_instance_private (self);
|
||||||
|
|
||||||
if (priv->freeze_count <= 0)
|
if (priv->freeze_count <= 0)
|
||||||
g_error ("Error in freeze/thaw accounting");
|
g_error ("Error in freeze/thaw accounting");
|
||||||
|
@ -51,6 +51,12 @@ META_EXPORT
|
|||||||
cairo_surface_t * meta_window_actor_get_image (MetaWindowActor *self,
|
cairo_surface_t * meta_window_actor_get_image (MetaWindowActor *self,
|
||||||
cairo_rectangle_int_t *clip);
|
cairo_rectangle_int_t *clip);
|
||||||
|
|
||||||
|
META_EXPORT
|
||||||
|
void meta_window_actor_freeze (MetaWindowActor *self);
|
||||||
|
|
||||||
|
META_EXPORT
|
||||||
|
void meta_window_actor_thaw (MetaWindowActor *self);
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
META_SHADOW_MODE_AUTO,
|
META_SHADOW_MODE_AUTO,
|
||||||
|
Loading…
Reference in New Issue
Block a user