void meta_compositor_remove_window (MetaCompositor *compositor, MetaWindow *window) { MetaWindowActor *window_actor = NULL; MetaScreen *screen; MetaCompScreen *info; DEBUG_TRACE ("meta_compositor_remove_window\n"); window_actor = META_WINDOW_ACTOR (meta_window_get_compositor_private (window)); if (!window_actor) return; screen = meta_window_get_screen (window); info = meta_screen_get_compositor_data (screen); if (window_actor == info->unredirected_window) { meta_window_actor_set_redirected (window_actor, TRUE); meta_shape_cow_for_window (meta_window_get_screen (meta_window_actor_get_meta_window (info->unredirected_window)), NULL); info->unredirected_window = NULL; } meta_window_actor_destroy (window_actor); }
static void pre_paint_windows (MetaCompScreen *info) { GList *l; MetaWindowActor *top_window; MetaWindowActor *expected_unredirected_window = NULL; if (info->windows == NULL) return; top_window = g_list_last (info->windows)->data; if (meta_window_actor_should_unredirect (top_window) && info->disable_unredirect_count == 0) expected_unredirected_window = top_window; if (info->unredirected_window != expected_unredirected_window) { if (info->unredirected_window != NULL) { meta_window_actor_set_redirected (info->unredirected_window, TRUE); meta_shape_cow_for_window (meta_window_get_screen (meta_window_actor_get_meta_window (info->unredirected_window)), NULL); } if (expected_unredirected_window != NULL) { meta_shape_cow_for_window (meta_window_get_screen (meta_window_actor_get_meta_window (top_window)), meta_window_actor_get_meta_window (top_window)); meta_window_actor_set_redirected (top_window, FALSE); } info->unredirected_window = expected_unredirected_window; } for (l = info->windows; l; l = l->next) meta_window_actor_pre_paint (l->data); }
static void set_unredirected_window (MetaCompositor *compositor, MetaWindow *window) { if (compositor->unredirected_window == window) return; if (compositor->unredirected_window != NULL) { MetaWindowActor *window_actor = META_WINDOW_ACTOR (meta_window_get_compositor_private (compositor->unredirected_window)); meta_window_actor_set_unredirected (window_actor, FALSE); } meta_shape_cow_for_window (compositor, window); compositor->unredirected_window = window; if (compositor->unredirected_window != NULL) { MetaWindowActor *window_actor = META_WINDOW_ACTOR (meta_window_get_compositor_private (compositor->unredirected_window)); meta_window_actor_set_unredirected (window_actor, TRUE); } }