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; }
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"); }