/**
 * 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);
}
static void
athena_desktop_background_init (AthenaDesktopBackground *self)
{
	self->details =
		G_TYPE_INSTANCE_GET_PRIVATE (self,
					     ATHENA_TYPE_DESKTOP_BACKGROUND,
					     AthenaDesktopBackgroundDetails);

        self->details->bg = gnome_bg_new ();
	self->details->default_color.red = 0xffff;
	self->details->default_color.green = 0xffff;
	self->details->default_color.blue = 0xffff;

	g_signal_connect (self->details->bg, "changed",
			  G_CALLBACK (athena_desktop_background_changed), self);
	g_signal_connect (self->details->bg, "transitioned",
			  G_CALLBACK (athena_desktop_background_transitioned), self);
}
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);
}