wayland/surface: Emit signal before applying state

Will be used to invalidate depending state that should be updated as
part of a surface state being applied.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/907
This commit is contained in:
Jonas Ådahl 2018-10-24 11:34:18 +02:00
parent 4bacb3621b
commit 0cf98c5641

View File

@ -96,6 +96,7 @@ enum
SURFACE_SHORTCUTS_INHIBITED, SURFACE_SHORTCUTS_INHIBITED,
SURFACE_SHORTCUTS_RESTORED, SURFACE_SHORTCUTS_RESTORED,
SURFACE_GEOMETRY_CHANGED, SURFACE_GEOMETRY_CHANGED,
SURFACE_PRE_STATE_APPLIED,
N_SURFACE_SIGNALS N_SURFACE_SIGNALS
}; };
@ -650,6 +651,8 @@ meta_wayland_surface_apply_pending_state (MetaWaylandSurface *surface,
{ {
gboolean had_damage = FALSE; gboolean had_damage = FALSE;
g_signal_emit (surface, surface_signals[SURFACE_PRE_STATE_APPLIED], 0);
if (surface->role) if (surface->role)
{ {
meta_wayland_surface_role_pre_commit (surface->role, pending); meta_wayland_surface_role_pre_commit (surface->role, pending);
@ -1718,6 +1721,13 @@ meta_wayland_surface_class_init (MetaWaylandSurfaceClass *klass)
0, NULL, NULL, 0, NULL, NULL,
g_cclosure_marshal_VOID__VOID, g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0); G_TYPE_NONE, 0);
surface_signals[SURFACE_PRE_STATE_APPLIED] =
g_signal_new ("pre-state-applied",
G_TYPE_FROM_CLASS (object_class),
G_SIGNAL_RUN_LAST,
0, NULL, NULL,
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
} }
static void static void