gnome-screensaver r1437 - in trunk: . src
- From: mccann svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-screensaver r1437 - in trunk: . src
- Date: Mon, 12 May 2008 20:39:04 +0100 (BST)
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]