[gnome-settings-daemon] Port backround module to GSettings
- From: Tomas Bzatek <tbzatek src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-settings-daemon] Port backround module to GSettings
- Date: Tue, 9 Nov 2010 18:02:49 +0000 (UTC)
commit 23b50dfc7078b78a513598060ee22ae46c262534
Author: Tomas Bzatek <tbzatek redhat com>
Date: Tue Nov 9 19:01:19 2010 +0100
Port backround module to GSettings
See bug 628624 for details.
configure.ac | 1 +
plugins/background/gsd-background-manager.c | 117 +++++++++++----------------
2 files changed, 50 insertions(+), 68 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index ad81acb..916c656 100644
--- a/configure.ac
+++ b/configure.ac
@@ -74,6 +74,7 @@ PKG_CHECK_MODULES(SETTINGS_PLUGIN,
gconf-2.0 >= $GCONF_REQUIRED_VERSION
gio-2.0 >= $GIO_REQUIRED_VERSION
dbus-glib-1 >= $DBUS_GLIB_REQUIRED_VERSION
+ gsettings-desktop-schemas
)
GSD_PLUGIN_LDFLAGS="-export_dynamic -module -avoid-version -no-undefined"
diff --git a/plugins/background/gsd-background-manager.c b/plugins/background/gsd-background-manager.c
index dde53c8..2a61d46 100644
--- a/plugins/background/gsd-background-manager.c
+++ b/plugins/background/gsd-background-manager.c
@@ -38,7 +38,6 @@
#include <glib/gi18n.h>
#include <gdk/gdk.h>
#include <gdk/gdkx.h>
-#include <gconf/gconf-client.h>
#define GNOME_DESKTOP_USE_UNSTABLE_API
#include <libgnomeui/gnome-bg.h>
@@ -47,15 +46,12 @@
#include "gnome-settings-profile.h"
#include "gsd-background-manager.h"
-#define NAUTILUS_SHOW_DESKTOP_KEY "/apps/nautilus/preferences/show_desktop"
-
#define GSD_BACKGROUND_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSD_TYPE_BACKGROUND_MANAGER, GsdBackgroundManagerPrivate))
struct GsdBackgroundManagerPrivate
{
- GConfClient *client;
+ GSettings *settings;
GnomeBG *bg;
- guint bg_notify_id;
guint timeout_id;
DBusConnection *dbus_connection;
@@ -65,6 +61,8 @@ static void gsd_background_manager_class_init (GsdBackgroundManagerClass *k
static void gsd_background_manager_init (GsdBackgroundManager *background_manager);
static void gsd_background_manager_finalize (GObject *object);
+static void setup_bg (GsdBackgroundManager *manager);
+
G_DEFINE_TYPE (GsdBackgroundManager, gsd_background_manager, G_TYPE_OBJECT)
static gpointer manager_object = NULL;
@@ -209,44 +207,55 @@ draw_background (GsdBackgroundManager *manager,
}
static void
-on_bg_changed (GnomeBG *bg,
- GsdBackgroundManager *manager)
+on_bg_transitioned (GnomeBG *bg,
+ GsdBackgroundManager *manager)
{
- draw_background (manager, TRUE);
+ draw_background (manager, FALSE);
}
static void
-on_bg_transitioned (GnomeBG *bg,
- GsdBackgroundManager *manager)
+background_changed (GsdBackgroundManager *manager,
+ gboolean use_crossfade)
{
- draw_background (manager, FALSE);
+ gboolean show_desktop_icons;
+
+ show_desktop_icons = g_settings_get_boolean (manager->priv->settings,
+ "show-desktop-icons");
+
+ if (!nautilus_is_running () || !show_desktop_icons) {
+ if (manager->priv->bg == NULL) {
+ setup_bg (manager);
+ }
+ gnome_bg_load_from_preferences (manager->priv->bg,
+ manager->priv->settings);
+ draw_background (manager, use_crossfade);
+ }
+}
+
+static gboolean
+settings_change_event_cb (GSettings *settings,
+ gpointer keys,
+ gint n_keys,
+ GsdBackgroundManager *manager)
+{
+ background_changed (manager, TRUE);
+ return FALSE;
}
static void
-gconf_changed_callback (GConfClient *client,
- guint cnxn_id,
- GConfEntry *entry,
+on_screen_size_changed (GdkScreen *screen,
GsdBackgroundManager *manager)
{
- gnome_bg_load_from_preferences (manager->priv->bg,
- manager->priv->client);
+ background_changed (manager, FALSE);
}
static void
watch_bg_preferences (GsdBackgroundManager *manager)
{
- g_assert (manager->priv->bg_notify_id == 0);
-
- gconf_client_add_dir (manager->priv->client,
- GNOME_BG_KEY_DIR,
- GCONF_CLIENT_PRELOAD_NONE,
- NULL);
- manager->priv->bg_notify_id = gconf_client_notify_add (manager->priv->client,
- GNOME_BG_KEY_DIR,
- (GConfClientNotifyFunc)gconf_changed_callback,
- manager,
- NULL,
- NULL);
+ g_signal_connect (manager->priv->settings,
+ "change-event",
+ G_CALLBACK (settings_change_event_cb),
+ manager);
}
static void
@@ -257,18 +266,13 @@ setup_bg (GsdBackgroundManager *manager)
manager->priv->bg = gnome_bg_new ();
g_signal_connect (manager->priv->bg,
- "changed",
- G_CALLBACK (on_bg_changed),
- manager);
-
- g_signal_connect (manager->priv->bg,
"transitioned",
G_CALLBACK (on_bg_transitioned),
manager);
watch_bg_preferences (manager);
gnome_bg_load_from_preferences (manager->priv->bg,
- manager->priv->client);
+ manager->priv->settings);
}
static gboolean
@@ -332,23 +336,6 @@ draw_background_after_session_loads (GsdBackgroundManager *manager)
manager->priv->dbus_connection = connection;
}
-static void
-on_screen_size_changed (GdkScreen *screen,
- GsdBackgroundManager *manager)
-{
- gboolean nautilus_show_desktop;
-
- nautilus_show_desktop = gconf_client_get_bool (manager->priv->client,
- NAUTILUS_SHOW_DESKTOP_KEY,
- NULL);
-
- if (!nautilus_is_running () || !nautilus_show_desktop) {
- if (manager->priv->bg == NULL) {
- setup_bg (manager);
- }
- draw_background (manager, FALSE);
- }
-}
static void
disconnect_screen_signals (GsdBackgroundManager *manager)
@@ -397,12 +384,12 @@ gboolean
gsd_background_manager_start (GsdBackgroundManager *manager,
GError **error)
{
- gboolean nautilus_show_desktop;
+ gboolean show_desktop_icons;
g_debug ("Starting background manager");
gnome_settings_profile_start (NULL);
- manager->priv->client = gconf_client_get_default ();
+ manager->priv->settings = g_settings_new ("org.gnome.desktop.background");
/* If this is set, nautilus will draw the background and is
* almost definitely in our session. however, it may not be
@@ -411,11 +398,10 @@ gsd_background_manager_start (GsdBackgroundManager *manager,
* don't waste time setting the background only to have
* nautilus overwrite it.
*/
- nautilus_show_desktop = gconf_client_get_bool (manager->priv->client,
- NAUTILUS_SHOW_DESKTOP_KEY,
- NULL);
+ show_desktop_icons = g_settings_get_boolean (manager->priv->settings,
+ "show-desktop-icons");
- if (!nautilus_show_desktop) {
+ if (!show_desktop_icons) {
setup_bg (manager);
} else {
draw_background_after_session_loads (manager);
@@ -443,18 +429,13 @@ gsd_background_manager_stop (GsdBackgroundManager *manager)
manager);
}
- if (manager->priv->bg_notify_id != 0) {
- gconf_client_remove_dir (manager->priv->client,
- GNOME_BG_KEY_DIR,
- NULL);
- gconf_client_notify_remove (manager->priv->client,
- manager->priv->bg_notify_id);
- manager->priv->bg_notify_id = 0;
- }
+ g_signal_handlers_disconnect_by_func (manager->priv->settings,
+ settings_change_event_cb,
+ manager);
- if (p->client != NULL) {
- g_object_unref (p->client);
- p->client = NULL;
+ if (p->settings != NULL) {
+ g_object_unref (p->settings);
+ p->settings = NULL;
}
if (p->timeout_id != 0) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]