compositor: make set_frozen a vfunc

MetaSurfaceActor can be made "frozen" via it's set_frozen method.

That method could be useful as virtual function, so that the wayland
subclass can tie into it and freeze the underlying surface.

This commit does the prerequiste work of making set_frozen a vfunc.
A future commit will change the wayland subclass code to leverage
the vfunc.
This commit is contained in:
Ray Strode 2018-03-19 11:22:48 -04:00 committed by Ray Strode
parent c21d12c4ac
commit 80562bbb10
2 changed files with 15 additions and 0 deletions

View File

@ -31,6 +31,9 @@ struct _MetaSurfaceActorPrivate
static void cullable_iface_init (MetaCullableInterface *iface);
void meta_surface_actor_real_set_frozen (MetaSurfaceActor *self,
gboolean frozen);
G_DEFINE_ABSTRACT_TYPE_WITH_CODE (MetaSurfaceActor, meta_surface_actor, CLUTTER_TYPE_ACTOR,
G_IMPLEMENT_INTERFACE (META_TYPE_CULLABLE, cullable_iface_init));
@ -121,6 +124,8 @@ meta_surface_actor_class_init (MetaSurfaceActorClass *klass)
object_class->dispose = meta_surface_actor_dispose;
actor_class->pick = meta_surface_actor_pick;
klass->set_frozen = meta_surface_actor_real_set_frozen;
signals[REPAINT_SCHEDULED] = g_signal_new ("repaint-scheduled",
G_TYPE_FROM_CLASS (object_class),
G_SIGNAL_RUN_LAST,
@ -331,6 +336,13 @@ meta_surface_actor_is_visible (MetaSurfaceActor *self)
void
meta_surface_actor_set_frozen (MetaSurfaceActor *self,
gboolean frozen)
{
return META_SURFACE_ACTOR_GET_CLASS (self)->set_frozen (self, frozen);
}
void
meta_surface_actor_real_set_frozen (MetaSurfaceActor *self,
gboolean frozen)
{
MetaSurfaceActorPrivate *priv = self->priv;

View File

@ -36,6 +36,9 @@ struct _MetaSurfaceActorClass
gboolean unredirected);
gboolean (* is_unredirected) (MetaSurfaceActor *actor);
void (* set_frozen) (MetaSurfaceActor *actor,
gboolean is_frozen);
MetaWindow *(* get_window) (MetaSurfaceActor *actor);
};