gnome-settings-daemon r645 - in trunk: . plugins/screensaver
- From: jensg svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-settings-daemon r645 - in trunk: . plugins/screensaver
- Date: Sun, 28 Dec 2008 19:57:29 +0000 (UTC)
Author: jensg
Date: Sun Dec 28 19:57:28 2008
New Revision: 645
URL: http://svn.gnome.org/viewvc/gnome-settings-daemon?rev=645&view=rev
Log:
2008-12-28 Jens Granseuer <jensgr gmx net>
* plugins/screensaver/gsd-screensaver-manager.c:
(start_screensaver_cb), (gsd_screensaver_manager_start): spawn
screensaver after a 30 second timeout instead of when idle so that
it doesn't compete with other processes when the session starts
(bug #564059). Also plug a few small leaks.
Modified:
trunk/ChangeLog
trunk/plugins/screensaver/gsd-screensaver-manager.c
Modified: trunk/plugins/screensaver/gsd-screensaver-manager.c
==============================================================================
--- trunk/plugins/screensaver/gsd-screensaver-manager.c (original)
+++ trunk/plugins/screensaver/gsd-screensaver-manager.c Sun Dec 28 19:57:28 2008
@@ -77,7 +77,7 @@
}
static gboolean
-start_screensaver_idle_cb (GsdScreensaverManager *manager)
+start_screensaver_cb (GsdScreensaverManager *manager)
{
GError *error = NULL;
char *ss_cmd;
@@ -85,14 +85,14 @@
char *args[3];
GConfClient *client;
- g_debug ("Starting screensaver process in idle callback");
+ g_debug ("Starting screensaver process after timeout");
gnome_settings_profile_start (NULL);
client = gconf_client_get_default ();
manager->priv->start_screensaver = gconf_client_get_bool (client, START_SCREENSAVER_KEY, NULL);
if (!manager->priv->start_screensaver)
- return FALSE;
+ goto done;
if ((ss_cmd = g_find_program_in_path ("gnome-screensaver"))) {
manager->priv->have_gscreensaver = TRUE;
@@ -116,13 +116,12 @@
args[1] = "-nosplash";
} else {
g_warning ("No screensaver available");
- return FALSE;
+ goto done;
}
args[2] = NULL;
if (g_spawn_async (g_get_home_dir (), args, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, &manager->priv->screensaver_pid, &error)) {
- g_object_unref (client);
- return FALSE;
+ goto done;
}
show_error = gconf_client_get_bool (client, SHOW_STARTUP_ERRORS_KEY, NULL);
@@ -139,8 +138,6 @@
"Screensaver functionality will not work in this session."),
error->message);
- g_error_free (error);
-
g_signal_connect (dialog, "response",
G_CALLBACK (gtk_widget_destroy),
NULL);
@@ -165,7 +162,9 @@
gtk_widget_show (dialog);
}
+ g_error_free (error);
+done:
g_object_unref (client);
gnome_settings_profile_end (NULL);
@@ -181,18 +180,10 @@
gnome_settings_profile_start (NULL);
/*
- * with gnome-screensaver, all settings are loaded internally
- * from gconf at startup
- *
- * with xscreensaver, our settings only apply to startup, and
- * the screensaver settings are all in xscreensaver and not
- * gconf.
- *
- * we could have xscreensaver-demo run gconftool-2 directly,
- * and start / stop xscreensaver here
+ * We'll start the screensaver after a delay so it doesn't
+ * compete with other processes while the session is starting
*/
-
- g_idle_add ((GSourceFunc) start_screensaver_idle_cb, manager);
+ g_timeout_add_seconds (30, (GSourceFunc) start_screensaver_cb, manager);
gnome_settings_profile_end (NULL);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]