r19564 - in /desktop/experimental/gnome-session/debian: changelog patches/10_session_save.patch
joss at users.alioth.debian.org
joss at users.alioth.debian.org
Mon Apr 13 13:24:54 UTC 2009
Author: joss
Date: Mon Apr 13 13:24:54 2009
New Revision: 19564
URL: http://svn.debian.org/wsvn/pkg-gnome/?sc=1&rev=19564
Log:
Enable session saving from the capplet again, and make it work on
the manager side.
Modified:
desktop/experimental/gnome-session/debian/changelog
desktop/experimental/gnome-session/debian/patches/10_session_save.patch
Modified: desktop/experimental/gnome-session/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/gnome-session/debian/changelog?rev=19564&op=diff
==============================================================================
--- desktop/experimental/gnome-session/debian/changelog (original)
+++ desktop/experimental/gnome-session/debian/changelog Mon Apr 13 13:24:54 2009
@@ -22,7 +22,8 @@
* Remove manpage hack, not necessary anymore.
* Install all autostart stuff in /usr/share, not in /etc.
* 10_session_save.patch: new patch, based on the patch by Ghee Teo.
- Enable session saving from the capplet again.
+ Enable session saving from the capplet again, and make it work on
+ the manager side.
* Use patch-translations.mk, require gnome-pkg-tools 0.13.
* Add translations based on the strings in gnome-session 2.22.
* Break gnome-panel < 2.26, since previous versions (2.22 and our
Modified: desktop/experimental/gnome-session/debian/patches/10_session_save.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/gnome-session/debian/patches/10_session_save.patch?rev=19564&op=diff
==============================================================================
--- desktop/experimental/gnome-session/debian/patches/10_session_save.patch (original)
+++ desktop/experimental/gnome-session/debian/patches/10_session_save.patch Mon Apr 13 13:24:54 2009
@@ -2,8 +2,8 @@
Index: gnome-session-2.26.0.90/data/session-properties.glade
===================================================================
---- gnome-session-2.26.0.90.orig/data/session-properties.glade 2009-04-11 15:58:23.958548837 +0200
-+++ gnome-session-2.26.0.90/data/session-properties.glade 2009-04-12 10:03:06.629976211 +0200
+--- gnome-session-2.26.0.90.orig/data/session-properties.glade 2009-04-12 11:21:47.414477454 +0200
++++ gnome-session-2.26.0.90/data/session-properties.glade 2009-04-12 18:39:21.470478635 +0200
@@ -306,7 +306,7 @@
<property name="visible">True</property>
<child>
@@ -33,28 +33,112 @@
<property name="position">1</property>
Index: gnome-session-2.26.0.90/gnome-session/gsm-manager.c
===================================================================
---- gnome-session-2.26.0.90.orig/gnome-session/gsm-manager.c 2009-04-11 15:56:55.566550412 +0200
-+++ gnome-session-2.26.0.90/gnome-session/gsm-manager.c 2009-04-11 15:57:05.946052485 +0200
-@@ -1871,6 +1871,18 @@ on_xsmp_client_logout_request (GsmXSMPCl
+--- gnome-session-2.26.0.90.orig/gnome-session/gsm-manager.c 2009-04-12 11:21:47.550484405 +0200
++++ gnome-session-2.26.0.90/gnome-session/gsm-manager.c 2009-04-13 15:07:16.949982874 +0200
+@@ -67,6 +67,7 @@
+ #define GSM_MANAGER_DBUS_NAME "org.gnome.SessionManager"
+
+ #define GSM_MANAGER_PHASE_TIMEOUT 10 /* seconds */
++#define GSM_MANAGER_SAVE_SESSION_TIMEOUT 2
+
+ #define GDM_FLEXISERVER_COMMAND "gdmflexiserver"
+ #define GDM_FLEXISERVER_ARGS "--startnew Standard"
+@@ -1056,6 +1057,24 @@ query_end_session_complete (GsmManager *
+
+ }
+
++static void
++query_save_session_complete (GsmManager *manager)
++{
++ GError *error = NULL;
++
++ if (manager->priv->query_timeout_id > 0) {
++ g_source_remove (manager->priv->query_timeout_id);
++ manager->priv->query_timeout_id = 0;
++ }
++
++ gsm_session_save (manager->priv->clients, &error);
++
++ if (error) {
++ g_warning ("Error saving session: %s", error->message);
++ g_error_free (error);
++ }
++}
++
+ static guint32
+ generate_cookie (void)
+ {
+@@ -1130,6 +1149,21 @@ _on_query_end_session_timeout (GsmManage
+ return FALSE;
+ }
+
++static gboolean
++_on_query_save_session_timeout (GsmManager *manager)
++{
++ manager->priv->query_timeout_id = 0;
++
++ g_debug ("GsmManager: query to save session timed out");
++
++ g_slist_free (manager->priv->query_clients);
++ manager->priv->query_clients = NULL;
++
++ query_save_session_complete (manager);
++
++ return FALSE;
++}
++
+ static void
+ do_phase_query_end_session (GsmManager *manager)
+ {
+@@ -1766,20 +1800,27 @@ on_client_end_session_response (GsmClien
+ const char *reason,
+ GsmManager *manager)
+ {
+- /* just ignore if received outside of shutdown */
+- if (manager->priv->phase < GSM_MANAGER_PHASE_QUERY_END_SESSION) {
++ /* just ignore if we are not yet running */
++ if (manager->priv->phase < GSM_MANAGER_PHASE_RUNNING) {
+ return;
+ }
+
+ g_debug ("GsmManager: Response from end session request: is-ok=%d do-last=%d cancel=%d reason=%s", is_ok, do_last, cancel, reason);
+
++ manager->priv->query_clients = g_slist_remove (manager->priv->query_clients, client);
++
++ if (manager->priv->phase == GSM_MANAGER_PHASE_RUNNING) {
++ if (manager->priv->query_clients == NULL) {
++ query_save_session_complete (manager);
++ }
++ return;
++ }
++
+ if (cancel) {
+ cancel_end_session (manager);
+ return;
+ }
+
+- manager->priv->query_clients = g_slist_remove (manager->priv->query_clients, client);
+-
+ if (! is_ok) {
+ guint cookie;
+ GsmInhibitor *inhibitor;
+@@ -1871,6 +1912,15 @@ on_xsmp_client_logout_request (GsmXSMPCl
}
static void
+on_xsmp_client_save_request (GsmXSMPClient *client,
-+ gboolean show_dialog,
-+ GsmManager *manager)
-+{
-+ GError *error;
-+
-+ g_debug ("GsmManager: save_request");
-+ error = NULL;
-+ gsm_session_save (manager->priv->clients, &error);
++ gboolean show_dialog,
++ GsmManager *manager)
++{
++ g_debug ("GsmManager: save_request");
++ gsm_manager_save_session (manager, NULL);
+}
+
+static void
on_store_client_added (GsmStore *store,
const char *id,
GsmManager *manager)
-@@ -1891,6 +1903,10 @@ on_store_client_added (GsmStore *store
+@@ -1891,6 +1941,10 @@ on_store_client_added (GsmStore *store
"logout-request",
G_CALLBACK (on_xsmp_client_logout_request),
manager);
@@ -65,38 +149,70 @@
}
g_signal_connect (client,
-@@ -2841,6 +2857,27 @@ gsm_manager_shutdown (GsmManager *manage
- }
-
- gboolean
+@@ -2840,6 +2894,59 @@ gsm_manager_shutdown (GsmManager *manage
+ return TRUE;
+ }
+
++static gboolean
++_client_request_save (const char *id,
++ GsmClient *client,
++ GsmManager *manager)
++{
++ gboolean ret;
++ GError *error;
++
++ error = NULL;
++ ret = gsm_client_request_save (client, &error);
++ if (ret) {
++ g_debug ("GsmManager: adding client to query clients: %s", gsm_client_peek_id (client));
++ manager->priv->query_clients = g_slist_prepend (manager->priv->query_clients,
++ client);
++ } else if (error) {
++ g_debug ("GsmManager: unable to query client: %s", error->message);
++ g_error_free (error);
++ }
++
++ return FALSE;
++}
++
++gboolean
+gsm_manager_save_session (GsmManager *manager,
-+ GError **error)
-+{
-+ g_debug ("GsmManager: SaveSession called");
-+
-+ g_return_val_if_fail (GSM_IS_MANAGER (manager), FALSE);
-+
-+ if (manager->priv->phase != GSM_MANAGER_PHASE_RUNNING) {
-+ g_set_error (error,
++ GError **error)
++{
++ g_debug ("GsmManager: SaveSession called");
++
++ g_return_val_if_fail (GSM_IS_MANAGER (manager), FALSE);
++
++ if (manager->priv->phase != GSM_MANAGER_PHASE_RUNNING) {
++ g_set_error (error,
+ GSM_MANAGER_ERROR,
+ GSM_MANAGER_ERROR_NOT_IN_RUNNING,
+ "SaveSession interface is only available during the Running phase");
-+ return FALSE;
-+ }
-+
-+ maybe_save_session (manager);
-+
-+ return TRUE;
-+}
-+
-+gboolean
++ return FALSE;
++ }
++
++ gsm_store_foreach (manager->priv->clients,
++ (GsmStoreFunc)_client_request_save,
++ manager);
++
++ if (manager->priv->query_clients) {
++ manager->priv->query_timeout_id = g_timeout_add_seconds (GSM_MANAGER_SAVE_SESSION_TIMEOUT,
++ (GSourceFunc)_on_query_save_session_timeout,
++ manager);
++ return TRUE;
++ } else {
++ g_debug ("GsmManager: Nothing to save");
++ return FALSE;
++ }
++}
++
+ gboolean
gsm_manager_can_shutdown (GsmManager *manager,
gboolean *shutdown_available,
- GError **error)
Index: gnome-session-2.26.0.90/gnome-session/gsm-manager.h
===================================================================
---- gnome-session-2.26.0.90.orig/gnome-session/gsm-manager.h 2009-04-11 15:57:11.406052291 +0200
-+++ gnome-session-2.26.0.90/gnome-session/gsm-manager.h 2009-04-11 15:57:19.160086252 +0200
+--- gnome-session-2.26.0.90.orig/gnome-session/gsm-manager.h 2009-04-12 11:21:47.510481555 +0200
++++ gnome-session-2.26.0.90/gnome-session/gsm-manager.h 2009-04-12 18:39:21.474478724 +0200
@@ -152,6 +152,9 @@ gboolean gsm_manager_is_inhib
gboolean gsm_manager_shutdown (GsmManager *manager,
GError **error);
@@ -109,8 +225,8 @@
GError **error);
Index: gnome-session-2.26.0.90/gnome-session/gsm-xsmp-client.c
===================================================================
---- gnome-session-2.26.0.90.orig/gnome-session/gsm-xsmp-client.c 2009-04-11 15:57:51.498551825 +0200
-+++ gnome-session-2.26.0.90/gnome-session/gsm-xsmp-client.c 2009-04-11 15:57:55.674051646 +0200
+--- gnome-session-2.26.0.90.orig/gnome-session/gsm-xsmp-client.c 2009-04-12 11:21:47.462481949 +0200
++++ gnome-session-2.26.0.90/gnome-session/gsm-xsmp-client.c 2009-04-13 10:52:33.417978598 +0200
@@ -69,6 +69,7 @@ enum {
enum {
REGISTER_REQUEST,
@@ -119,7 +235,42 @@
LAST_SIGNAL
};
-@@ -1012,6 +1013,17 @@ gsm_xsmp_client_class_init (GsmXSMPClien
+@@ -522,6 +523,26 @@ xsmp_cancel_end_session (GsmClient *clie
+ return TRUE;
+ }
+
++static gboolean
++xsmp_request_save (GsmClient *client,
++ GError **error)
++{
++ GsmXSMPClient *xsmp = (GsmXSMPClient *) client;
++
++ g_debug ("GsmXSMPClient: xsmp_request_save ('%s')", xsmp->priv->description);
++
++ if (xsmp->priv->conn == NULL) {
++ g_set_error (error,
++ GSM_CLIENT_ERROR,
++ GSM_CLIENT_ERROR_NOT_REGISTERED,
++ "Client is not registered");
++ return FALSE;
++ }
++
++ do_save_yourself (xsmp, SmSaveLocal, FALSE);
++
++ return TRUE;
++}
+ static char *
+ get_desktop_file_path (GsmXSMPClient *client)
+ {
+@@ -982,6 +1003,7 @@ gsm_xsmp_client_class_init (GsmXSMPClien
+ object_class->get_property = gsm_xsmp_client_get_property;
+ object_class->set_property = gsm_xsmp_client_set_property;
+
++ client_class->impl_request_save = xsmp_request_save;
+ client_class->impl_save = xsmp_save;
+ client_class->impl_stop = xsmp_stop;
+ client_class->impl_query_end_session = xsmp_query_end_session;
+@@ -1012,6 +1034,17 @@ gsm_xsmp_client_class_init (GsmXSMPClien
G_TYPE_NONE,
1, G_TYPE_BOOLEAN);
@@ -139,8 +290,8 @@
g_param_spec_pointer ("ice-connection",
Index: gnome-session-2.26.0.90/gnome-session/gsm-xsmp-client.h
===================================================================
---- gnome-session-2.26.0.90.orig/gnome-session/gsm-xsmp-client.h 2009-04-11 15:58:08.770553085 +0200
-+++ gnome-session-2.26.0.90/gnome-session/gsm-xsmp-client.h 2009-04-11 15:58:12.602052551 +0200
+--- gnome-session-2.26.0.90.orig/gnome-session/gsm-xsmp-client.h 2009-04-12 11:21:47.434478390 +0200
++++ gnome-session-2.26.0.90/gnome-session/gsm-xsmp-client.h 2009-04-12 18:39:21.474478724 +0200
@@ -54,7 +54,8 @@ struct _GsmXSMPClientClass
char **client_id);
gboolean (*logout_request) (GsmXSMPClient *client,
@@ -153,8 +304,8 @@
Index: gnome-session-2.26.0.90/gnome-session/org.gnome.SessionManager.xml
===================================================================
---- gnome-session-2.26.0.90.orig/gnome-session/org.gnome.SessionManager.xml 2009-04-11 15:57:31.790054168 +0200
-+++ gnome-session-2.26.0.90/gnome-session/org.gnome.SessionManager.xml 2009-04-11 15:57:35.544087712 +0200
+--- gnome-session-2.26.0.90.orig/gnome-session/org.gnome.SessionManager.xml 2009-04-12 11:21:47.486481019 +0200
++++ gnome-session-2.26.0.90/gnome-session/org.gnome.SessionManager.xml 2009-04-12 18:39:21.474478724 +0200
@@ -256,6 +256,14 @@
</doc:doc>
</method>
@@ -172,8 +323,8 @@
<doc:doc>
Index: gnome-session-2.26.0.90/capplet/gsm-properties-dialog.c
===================================================================
---- gnome-session-2.26.0.90.orig/capplet/gsm-properties-dialog.c 2009-04-11 16:04:30.250051528 +0200
-+++ gnome-session-2.26.0.90/capplet/gsm-properties-dialog.c 2009-04-12 10:29:31.953978633 +0200
+--- gnome-session-2.26.0.90.orig/capplet/gsm-properties-dialog.c 2009-04-12 11:21:47.370481360 +0200
++++ gnome-session-2.26.0.90/capplet/gsm-properties-dialog.c 2009-04-12 18:39:21.474478724 +0200
@@ -41,6 +41,12 @@
#include "gsm-app-dialog.h"
#include "eggdesktopfile.h"
@@ -263,8 +414,8 @@
static void
Index: gnome-session-2.26.0.90/configure.in
===================================================================
---- gnome-session-2.26.0.90.orig/configure.in 2009-04-12 10:08:16.037980302 +0200
-+++ gnome-session-2.26.0.90/configure.in 2009-04-12 10:08:32.332285793 +0200
+--- gnome-session-2.26.0.90.orig/configure.in 2009-04-12 11:21:47.342482201 +0200
++++ gnome-session-2.26.0.90/configure.in 2009-04-12 18:39:21.478478814 +0200
@@ -67,6 +67,7 @@ PKG_CHECK_MODULES(SESSION_PROPERTIES,
glib-2.0 >= $GLIB_REQUIRED
gtk+-2.0 >= $GTK_REQUIRED
@@ -273,3 +424,76 @@
)
PKG_CHECK_MODULES(SPLASH,
+Index: gnome-session-2.26.0.90/gnome-session/gsm-client.h
+===================================================================
+--- gnome-session-2.26.0.90.orig/gnome-session/gsm-client.h 2009-04-13 10:23:56.085980746 +0200
++++ gnome-session-2.26.0.90/gnome-session/gsm-client.h 2009-04-13 10:32:21.757979490 +0200
+@@ -92,6 +92,8 @@ struct _GsmClientClass
+ GError **error);
+ gboolean (*impl_stop) (GsmClient *client,
+ GError **error);
++ gboolean (*impl_request_save) (GsmClient *client,
++ GError **error);
+ GKeyFile * (*impl_save) (GsmClient *client,
+ GError **error);
+ };
+@@ -137,6 +139,8 @@ gboolean gsm_client_cancel_
+
+ void gsm_client_disconnected (GsmClient *client);
+
++gboolean gsm_client_request_save (GsmClient *client,
++ GError **error);
+ GKeyFile *gsm_client_save (GsmClient *client,
+ GError **error);
+ /* exported to bus */
+Index: gnome-session-2.26.0.90/gnome-session/gsm-dbus-client.c
+===================================================================
+--- gnome-session-2.26.0.90.orig/gnome-session/gsm-dbus-client.c 2009-04-13 10:32:28.393980156 +0200
++++ gnome-session-2.26.0.90/gnome-session/gsm-dbus-client.c 2009-04-13 10:35:28.633978465 +0200
+@@ -413,6 +413,18 @@ gsm_dbus_client_finalize (GObject *objec
+ G_OBJECT_CLASS (gsm_dbus_client_parent_class)->finalize (object);
+ }
+
++static gboolean
++dbus_client_request_save (GsmClient *client,
++ GError **error)
++{
++ g_debug ("GsmDBusClient: sending save request to client with id %s",
++ gsm_client_peek_id (client));
++
++ /* FIXME: The protocol does not support this */
++
++ return FALSE;
++}
++
+ static GKeyFile *
+ dbus_client_save (GsmClient *client,
+ GError **error)
+@@ -665,6 +677,7 @@ gsm_dbus_client_class_init (GsmDBusClien
+ object_class->set_property = gsm_dbus_client_set_property;
+ object_class->dispose = gsm_dbus_client_dispose;
+
++ client_class->impl_request_save = dbus_client_request_save;
+ client_class->impl_save = dbus_client_save;
+ client_class->impl_stop = dbus_client_stop;
+ client_class->impl_query_end_session = dbus_client_query_end_session;
+Index: gnome-session-2.26.0.90/gnome-session/gsm-client.c
+===================================================================
+--- gnome-session-2.26.0.90.orig/gnome-session/gsm-client.c 2009-04-13 10:23:55.981981355 +0200
++++ gnome-session-2.26.0.90/gnome-session/gsm-client.c 2009-04-13 15:10:12.685978301 +0200
+@@ -510,6 +510,15 @@ gsm_client_disconnected (GsmClient *clie
+ g_signal_emit (client, signals[DISCONNECTED], 0);
+ }
+
++gboolean
++gsm_client_request_save (GsmClient *client,
++ GError **error)
++{
++ g_return_val_if_fail (GSM_IS_CLIENT (client), FALSE);
++
++ return GSM_CLIENT_GET_CLASS (client)->impl_request_save (client, error);
++}
++
+ GKeyFile *
+ gsm_client_save (GsmClient *client,
+ GError **error)
More information about the pkg-gnome-commits
mailing list