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