diff --git a/src/compositor/meta-background.c b/src/compositor/meta-background.c index 6284a7a64..3f2e23f44 100644 --- a/src/compositor/meta-background.c +++ b/src/compositor/meta-background.c @@ -71,6 +71,8 @@ enum G_DEFINE_TYPE (MetaBackground, meta_background, G_TYPE_OBJECT) +static GSList *all_backgrounds = NULL; + static void free_fbos (MetaBackground *self) { @@ -305,6 +307,8 @@ meta_background_dispose (GObject *object) static void meta_background_finalize (GObject *object) { + all_backgrounds = g_slist_remove (all_backgrounds, object); + G_OBJECT_CLASS (meta_background_parent_class)->finalize (object); } @@ -347,6 +351,7 @@ meta_background_init (MetaBackground *self) self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, META_TYPE_BACKGROUND, MetaBackgroundPrivate); + all_backgrounds = g_slist_prepend (all_backgrounds, self); } static void @@ -913,3 +918,12 @@ meta_background_set_blend (MetaBackground *self, free_wallpaper_texture (self); mark_changed (self); } + +void +meta_background_refresh_all (void) +{ + GSList *l; + + for (l = all_backgrounds; l; l = l->next) + mark_changed (l->data); +} diff --git a/src/meta/meta-background.h b/src/meta/meta-background.h index 822d27bde..d48d966a0 100644 --- a/src/meta/meta-background.h +++ b/src/meta/meta-background.h @@ -57,6 +57,8 @@ struct _MetaBackground MetaBackgroundPrivate *priv; }; +void meta_background_refresh_all (void); + GType meta_background_get_type (void); MetaBackground *meta_background_new (MetaScreen *screen);