gnome-screensaver r1437 - in trunk: . src



Author: mccann
Date: Mon May 12 19:39:04 2008
New Revision: 1437
URL: http://svn.gnome.org/viewvc/gnome-screensaver?rev=1437&view=rev

Log:
2008-05-12  William Jon McCann  <jmccann redhat com>

	* configure.ac:
	* src/Makefile.am:
	* src/gs-manager.c (on_bg_changed), (gconf_changed_callback),
	(watch_bg_preferences), (get_gconf_client), (gs_manager_init),
	(gs_manager_finalize), (apply_background_to_window),
	(manager_show_window):
	Use new gnome-desktop API for loading BG preferences
	instead of libbackground.



Modified:
   trunk/ChangeLog
   trunk/configure.ac
   trunk/src/   (props changed)
   trunk/src/Makefile.am
   trunk/src/gs-manager.c

Modified: trunk/configure.ac
==============================================================================
--- trunk/configure.ac	(original)
+++ trunk/configure.ac	Mon May 12 19:39:04 2008
@@ -41,7 +41,7 @@
 GDK_REQUIRED_VERSION=2.7.0
 GTK_REQUIRED_VERSION=2.11.5
 LIBGNOME_MENU_REQUIRED_VERSION=2.11.1
-GNOME_DESKTOP_REQUIRED_VERSION=2.21.4
+GNOME_DESKTOP_REQUIRED_VERSION=2.23.2
 
 GLADE_REQUIRED_VERSION=2.5.0
 LIBGNOMEKBDUI_REQUIRED_VERSION=0.1

Modified: trunk/src/Makefile.am
==============================================================================
--- trunk/src/Makefile.am	(original)
+++ trunk/src/Makefile.am	Mon May 12 19:39:04 2008
@@ -3,17 +3,12 @@
 
 NULL =
 
-SUBDIRS =               \
-        libbackground   \
-        $(NULL)
-
 saverdir = $(libexecdir)/gnome-screensaver
 themesdir = $(pkgdatadir)/themes
 
 INCLUDES =							\
 	-I.							\
 	-I$(srcdir)						\
-        -I$(top_srcdir)/src/libbackground   			\
 	-DGMENU_I_KNOW_THIS_IS_UNSTABLE				\
 	$(GNOME_SCREENSAVER_CFLAGS)				\
 	$(GNOME_SCREENSAVER_DIALOG_CFLAGS)			\
@@ -213,7 +208,6 @@
 gnome_screensaver_LDADD =		\
 	$(GNOME_SCREENSAVER_LIBS)	\
 	$(SAVER_LIBS)			\
-        $(top_builddir)/src/libbackground/libbackground.la \
 	$(NULL)
 
 gnome_screensaver_LDFLAGS = -export-dynamic

Modified: trunk/src/gs-manager.c
==============================================================================
--- trunk/src/gs-manager.c	(original)
+++ trunk/src/gs-manager.c	Mon May 12 19:39:04 2008
@@ -27,7 +27,6 @@
 
 #define GNOME_DESKTOP_USE_UNSTABLE_API
 #include <libgnomeui/gnome-bg.h>
-#include "preferences.h"
 
 #include "gs-prefs.h"        /* for GSSaverMode */
 
@@ -51,8 +50,9 @@
         GHashTable  *jobs;
 
         GSThemeManager *theme_manager;
-        BGPreferences  *prefs;
+        GConfClient    *client;
         GnomeBG        *bg;
+        guint           bg_notify_id;
 
         /* Policy */
         glong        lock_timeout;
@@ -939,6 +939,59 @@
 }
 
 static void
+on_bg_changed (GnomeBG   *bg,
+               GSManager *manager)
+{
+        gs_debug ("background changed");
+}
+
+static void
+gconf_changed_callback (GConfClient *client,
+                        guint        cnxn_id,
+                        GConfEntry  *entry,
+                        GSManager   *manager)
+{
+        gnome_bg_load_from_preferences (manager->priv->bg,
+                                        manager->priv->client);
+}
+
+static void
+watch_bg_preferences (GSManager *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);
+}
+
+static GConfClient *
+get_gconf_client (void)
+{
+        GConfClient *client;
+#if 0
+        const char  *dest_address;
+        GError      *error;
+        GConfEngine *engine;
+
+        dest_address = "xml:merged:/etc/gconf/gconf.xml.mandatory";
+        error = NULL;
+        engine = gconf_engine_get_local (dest_address, &error);
+        client = gconf_client_get_for_engine (engine);
+#else
+        client = gconf_client_get_default ();
+#endif
+        return client;
+}
+
+static void
 gs_manager_init (GSManager *manager)
 {
         manager->priv = GS_MANAGER_GET_PRIVATE (manager);
@@ -947,18 +1000,18 @@
         manager->priv->grab = gs_grab_new ();
         manager->priv->theme_manager = gs_theme_manager_new ();
 
-        manager->priv->prefs = BG_PREFERENCES (bg_preferences_new ());
+        /* FIXME: use a client that gives us system defaults */
+        manager->priv->client = get_gconf_client ();
         manager->priv->bg = gnome_bg_new ();
 
-#if 0
         g_signal_connect (manager->priv->bg,
                           "changed",
                           G_CALLBACK (on_bg_changed),
                           manager);
-#endif
+        watch_bg_preferences (manager);
 
         /* FIXME: should only load from defaults */
-        bg_preferences_load (manager->priv->prefs);
+        gnome_bg_load_from_preferences (manager->priv->bg, manager->priv->client);
 }
 
 static void
@@ -990,6 +1043,18 @@
 
         g_return_if_fail (manager->priv != NULL);
 
+        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;
+        }
+        if (manager->priv->client != NULL) {
+                g_object_unref (manager->priv->client);
+        }
+
         free_themes (manager);
         g_free (manager->priv->logout_command);
         g_free (manager->priv->keyboard_command);
@@ -1236,65 +1301,14 @@
 }
 
 static void
-apply_background_prefs_to_window (GSManager *manager,
-                                  GSWindow  *window)
+apply_background_to_window (GSManager *manager,
+                            GSWindow  *window)
 {
-        GnomeBGPlacement placement;
-        GnomeBGColorType color;
-        const char      *uri;
         GdkPixmap       *pixmap;
         GdkScreen       *screen;
         int              width;
         int              height;
 
-        uri = manager->priv->prefs->wallpaper_filename;
-
-        placement = GNOME_BG_PLACEMENT_TILED;
-
-        switch (manager->priv->prefs->wallpaper_type) {
-        case WPTYPE_TILED:
-                placement = GNOME_BG_PLACEMENT_TILED;
-                break;
-        case WPTYPE_CENTERED:
-                placement = GNOME_BG_PLACEMENT_CENTERED;
-                break;
-        case WPTYPE_SCALED:
-                placement = GNOME_BG_PLACEMENT_SCALED;
-                break;
-        case WPTYPE_STRETCHED:
-                placement = GNOME_BG_PLACEMENT_FILL_SCREEN;
-                break;
-        case WPTYPE_ZOOM:
-                placement = GNOME_BG_PLACEMENT_ZOOMED;
-                break;
-        case WPTYPE_NONE:
-        case WPTYPE_UNSET:
-                uri = NULL;
-                break;
-        }
-
-        switch (manager->priv->prefs->orientation) {
-        case ORIENTATION_SOLID:
-                color = GNOME_BG_COLOR_SOLID;
-                break;
-        case ORIENTATION_HORIZ:
-                color = GNOME_BG_COLOR_H_GRADIENT;
-                break;
-        case ORIENTATION_VERT:
-                color = GNOME_BG_COLOR_V_GRADIENT;
-                break;
-        default:
-                color = GNOME_BG_COLOR_SOLID;
-                break;
-        }
-
-        gnome_bg_set_uri (manager->priv->bg, uri);
-        gnome_bg_set_placement (manager->priv->bg, placement);
-        gnome_bg_set_color (manager->priv->bg,
-                            color,
-                            manager->priv->prefs->color1,
-                            manager->priv->prefs->color2);
-
         screen = gs_window_get_screen (window);
         width = gdk_screen_get_width (screen);
         height = gdk_screen_get_height (screen);
@@ -1314,7 +1328,7 @@
 {
         GSJob *job;
 
-        apply_background_prefs_to_window (manager, window);
+        apply_background_to_window (manager, window);
 
         job = gs_job_new_for_widget (GTK_WIDGET (window));
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]