static void athena_desktop_background_constructed (GObject *obj) { AthenaDesktopBackground *self; GtkWidget *widget; self = ATHENA_DESKTOP_BACKGROUND (obj); if (G_OBJECT_CLASS (athena_desktop_background_parent_class)->constructed != NULL) { G_OBJECT_CLASS (athena_desktop_background_parent_class)->constructed (obj); } widget = self->details->widget; g_assert (widget != NULL); g_signal_connect_object (widget, "destroy", G_CALLBACK (on_widget_destroyed), self, 0); g_signal_connect_object (widget, "realize", G_CALLBACK (widget_realize_cb), self, 0); g_signal_connect_object (widget, "unrealize", G_CALLBACK (widget_unrealize_cb), self, 0); gnome_bg_load_from_preferences (self->details->bg, gnome_background_preferences); /* Let's receive batch change events instead of every single one */ g_signal_connect (gnome_background_preferences, "change-event", G_CALLBACK (background_settings_change_event_cb), self); queue_background_change (self); }
static gboolean background_change_event_idle_cb (AthenaDesktopBackground *self) { gnome_bg_load_from_preferences (self->details->bg, gnome_background_preferences); g_object_unref (self); return FALSE; }
static gboolean background_settings_change_event_cb (GSettings *settings, gpointer keys, gint n_keys, GSManager *manager) { gnome_bg_load_from_preferences (manager->priv->bg, manager->priv->settings); return FALSE; }
/** * gs_screenshot_image_get_desktop_pixbuf: **/ static GdkPixbuf * gs_screenshot_image_get_desktop_pixbuf (GsScreenshotImage *ssimg) { GsScreenshotImagePrivate *priv; _cleanup_object_unref_ GnomeBG *bg = NULL; _cleanup_object_unref_ GnomeDesktopThumbnailFactory *factory = NULL; _cleanup_object_unref_ GSettings *settings = NULL; priv = gs_screenshot_image_get_instance_private (ssimg); factory = gnome_desktop_thumbnail_factory_new (GNOME_DESKTOP_THUMBNAIL_SIZE_LARGE); bg = gnome_bg_new (); settings = g_settings_new ("org.gnome.desktop.background"); gnome_bg_load_from_preferences (bg, settings); return gnome_bg_create_thumbnail (bg, factory, gdk_screen_get_default (), priv->width, priv->height); }
main (int argc, char *argv[]) { GOptionContext *context = NULL; GError *error = NULL; GdkScreen *screen; GdkRectangle rect; GnomeBG *bg; GSettings *settings; GdkPixbuf *pixbuf; gdk_init (&argc, &argv); context = g_option_context_new ("- refresh wallpaper cache"); g_option_context_add_main_entries (context, entries, NULL); if (!g_option_context_parse (context, &argc, &argv, &error)) { g_printerr ("option parsing failed: %s\n", error->message); g_option_context_free(context); g_error_free (error); return (1); } if (context) g_option_context_free (context); /* cache only the first monitor */ screen = gdk_screen_get_default (); gdk_screen_get_monitor_geometry (screen, 0, &rect); bg = gnome_bg_new (); settings = g_settings_new ("org.cinnamon.desktop.background"); gnome_bg_load_from_preferences (bg, settings); pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8, rect.width, rect.height); gnome_bg_draw (bg, pixbuf, screen, FALSE); g_object_unref (settings); return (0); }
static void gs_manager_init (GSManager *manager) { manager->priv = GS_MANAGER_GET_PRIVATE (manager); manager->priv->fade = gs_fade_new (); manager->priv->grab = gs_grab_new (); manager->priv->settings = get_system_settings (); manager->priv->bg = gnome_bg_new (); g_signal_connect (manager->priv->bg, "changed", G_CALLBACK (on_bg_changed), manager); g_signal_connect (manager->priv->settings, "change-event", G_CALLBACK (background_settings_change_event_cb), manager); gnome_bg_load_from_preferences (manager->priv->bg, manager->priv->settings); }