예제 #1
0
static MetaScreenBackground *
meta_screen_background_get (MetaScreen *screen)
{
  MetaScreenBackground *background;

  background = g_object_get_data (G_OBJECT (screen), "meta-screen-background");
  if (background == NULL)
    {
      ClutterActor *stage;

      background = g_new0 (MetaScreenBackground, 1);

      background->screen = screen;
      g_object_set_data_full (G_OBJECT (screen), "meta-screen-background",
                              background, (GDestroyNotify) free_screen_background);

      stage = meta_get_stage_for_screen (screen);
      g_signal_connect (stage, "notify::color",
                        G_CALLBACK (on_notify_stage_color), background);

      meta_background_actor_update (screen);
    }

  return background;
}
예제 #2
0
파일: compositor.c 프로젝트: nkoep/muffin
static void
process_property_notify (MetaCompositor	*compositor,
                         XPropertyEvent *event,
                         MetaWindow     *window)
{
    MetaWindowActor *window_actor;

    if (event->atom == compositor->atom_x_root_pixmap)
    {
        GSList *l;

        for (l = meta_display_get_screens (compositor->display); l; l = l->next)
        {
            MetaScreen  *screen = l->data;
            if (event->window == meta_screen_get_xroot (screen))
            {
                meta_background_actor_update (screen);
                return;
            }
        }
    }

    if (window == NULL)
        return;

    window_actor = META_WINDOW_ACTOR (meta_window_get_compositor_private (window));
    if (window_actor == NULL)
        return;

    /* Check for the opacity changing */
    if (event->atom == compositor->atom_net_wm_window_opacity)
    {
        meta_window_actor_update_opacity (window_actor);
        DEBUG_TRACE ("process_property_notify: net_wm_window_opacity\n");
        return;
    }

    DEBUG_TRACE ("process_property_notify: unknown\n");
}