diff --git a/src/compositor/compositor.c b/src/compositor/compositor.c index 45c92d8cb..6f4982553 100644 --- a/src/compositor/compositor.c +++ b/src/compositor/compositor.c @@ -107,6 +107,7 @@ typedef struct _MetaCompositorPrivate gulong stage_presented_id; gulong before_paint_handler_id; gulong after_paint_handler_id; + gulong window_visibility_updated_id; int64_t server_time_query_time; int64_t server_time_offset; @@ -1042,6 +1043,16 @@ on_after_paint (ClutterStage *stage, meta_compositor_after_paint (compositor, stage_view); } +static void +on_window_visibility_updated (MetaDisplay *display, + GList *unplaced, + GList *should_show, + GList *should_hide, + MetaCompositor *compositor) +{ + update_top_window_actor (compositor); +} + static void meta_compositor_set_property (GObject *object, guint prop_id, @@ -1116,6 +1127,12 @@ meta_compositor_constructed (GObject *object) G_CALLBACK (on_after_paint), compositor); + priv->window_visibility_updated_id = + g_signal_connect (priv->display, + "window-visibility-updated", + G_CALLBACK (on_window_visibility_updated), + compositor); + priv->laters = meta_laters_new (compositor); G_OBJECT_CLASS (meta_compositor_parent_class)->constructed (object); @@ -1134,6 +1151,7 @@ meta_compositor_dispose (GObject *object) g_clear_signal_handler (&priv->stage_presented_id, stage); g_clear_signal_handler (&priv->before_paint_handler_id, stage); g_clear_signal_handler (&priv->after_paint_handler_id, stage); + g_clear_signal_handler (&priv->window_visibility_updated_id, priv->display); g_clear_pointer (&priv->windows, g_list_free);