コード例 #1
0
ファイル: compositor.c プロジェクト: nkoep/muffin
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);
}
コード例 #2
0
ファイル: compositor.c プロジェクト: nkoep/muffin
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);
}
コード例 #3
0
ファイル: compositor.c プロジェクト: MaximeMorel/mutter
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);
    }
}