r19565 - /desktop/experimental/gnome-session/debian/patches/10_session_save.patch

joss at users.alioth.debian.org joss at users.alioth.debian.org
Mon Apr 13 14:46:40 UTC 2009


Author: joss
Date: Mon Apr 13 14:46:40 2009
New Revision: 19565

URL: http://svn.debian.org/wsvn/pkg-gnome/?sc=1&rev=19565
Log:
Also handle Phase 2 saving

Modified:
    desktop/experimental/gnome-session/debian/patches/10_session_save.patch

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=19565&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 14:46:40 2009
@@ -34,7 +34,7 @@
 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-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
++++ gnome-session-2.26.0.90/gnome-session/gsm-manager.c	2009-04-13 16:18:30.938481203 +0200
 @@ -67,6 +67,7 @@
  #define GSM_MANAGER_DBUS_NAME "org.gnome.SessionManager"
  
@@ -43,14 +43,59 @@
  
  #define GDM_FLEXISERVER_COMMAND "gdmflexiserver"
  #define GDM_FLEXISERVER_ARGS    "--startnew Standard"
-@@ -1056,6 +1057,24 @@ query_end_session_complete (GsmManager *
- 
- }
- 
+@@ -1056,6 +1057,69 @@ query_end_session_complete (GsmManager *
+ 
+ }
+ 
++static gboolean
++_client_request_save (GsmClient            *client,
++                      ClientEndSessionData *data)
++{
++        gboolean ret;
++        GError  *error;
++
++        error = NULL;
++        ret = gsm_client_request_save (client, data->flags, &error);
++        if (ret) {
++                g_debug ("GsmManager: adding client to query clients: %s", gsm_client_peek_id (client));
++                data->manager->priv->query_clients = g_slist_prepend (data->manager->priv->query_clients,
++                                                                      client);
++        } else if (error) {
++                g_debug ("GsmManager: unable to query client: %s", error->message);
++                g_error_free (error);
++        }
++
++        return FALSE;
++}
++
++static gboolean
++_client_request_save_helper (const char           *id,
++                             GsmClient            *client,
++                             ClientEndSessionData *data)
++{
++        return _client_request_save (client, data);
++}
++
 +static void
 +query_save_session_complete (GsmManager *manager)
 +{
 +        GError *error = NULL;
++
++        if (g_slist_length (manager->priv->next_query_clients) > 0) {
++                ClientEndSessionData data;
++
++                data.manager = manager;
++                data.flags = GSM_CLIENT_END_SESSION_FLAG_LAST;
++
++                g_slist_foreach (manager->priv->next_query_clients,
++                                 (GFunc)_client_request_save,
++                                 &data);
++
++                g_slist_free (manager->priv->next_query_clients);
++                manager->priv->next_query_clients = NULL;
++
++                return;
++        }
 +
 +        if (manager->priv->query_timeout_id > 0) {
 +                g_source_remove (manager->priv->query_timeout_id);
@@ -68,7 +113,7 @@
  static guint32
  generate_cookie (void)
  {
-@@ -1130,6 +1149,21 @@ _on_query_end_session_timeout (GsmManage
+@@ -1130,6 +1194,21 @@ _on_query_end_session_timeout (GsmManage
          return FALSE;
  }
  
@@ -90,7 +135,7 @@
  static void
  do_phase_query_end_session (GsmManager *manager)
  {
-@@ -1766,20 +1800,27 @@ on_client_end_session_response (GsmClien
+@@ -1766,20 +1845,31 @@ on_client_end_session_response (GsmClien
                                  const char *reason,
                                  GsmManager *manager)
  {
@@ -106,6 +151,10 @@
 +        manager->priv->query_clients = g_slist_remove (manager->priv->query_clients, client);
 +
 +        if (manager->priv->phase == GSM_MANAGER_PHASE_RUNNING) {
++                if (do_last) {
++                        manager->priv->next_query_clients = g_slist_prepend (manager->priv->next_query_clients,
++                                                                             client);
++                }
 +                if (manager->priv->query_clients == NULL) {
 +                        query_save_session_complete (manager);
 +                }
@@ -122,7 +171,7 @@
          if (! is_ok) {
                  guint         cookie;
                  GsmInhibitor *inhibitor;
-@@ -1871,6 +1912,15 @@ on_xsmp_client_logout_request (GsmXSMPCl
+@@ -1871,6 +1961,15 @@ on_xsmp_client_logout_request (GsmXSMPCl
  }
  
  static void
@@ -138,7 +187,7 @@
  on_store_client_added (GsmStore   *store,
                         const char *id,
                         GsmManager *manager)
-@@ -1891,6 +1941,10 @@ on_store_client_added (GsmStore   *store
+@@ -1891,6 +1990,10 @@ on_store_client_added (GsmStore   *store
                                    "logout-request",
                                    G_CALLBACK (on_xsmp_client_logout_request),
                                    manager);
@@ -149,36 +198,15 @@
          }
  
          g_signal_connect (client,
-@@ -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
+@@ -2841,6 +2944,41 @@ gsm_manager_shutdown (GsmManager *manage
+ }
+ 
+ gboolean
 +gsm_manager_save_session (GsmManager *manager,
 +                          GError     **error)
 +{
++        ClientEndSessionData data;
++
 +        g_debug ("GsmManager: SaveSession called");
 +
 +        g_return_val_if_fail (GSM_IS_MANAGER (manager), FALSE);
@@ -191,9 +219,11 @@
 +                return FALSE;
 +        }
 +
++        data.manager = manager;
++        data.flags = 0;
 +        gsm_store_foreach (manager->priv->clients,
-+                           (GsmStoreFunc)_client_request_save,
-+                           manager);
++                           (GsmStoreFunc)_client_request_save_helper,
++                           &data);
 +
 +        if (manager->priv->query_clients) {
 +                manager->priv->query_timeout_id = g_timeout_add_seconds (GSM_MANAGER_SAVE_SESSION_TIMEOUT,
@@ -206,9 +236,10 @@
 +        }
 +}
 +
- gboolean
++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-12 11:21:47.510481555 +0200
@@ -226,7 +257,7 @@
 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-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
++++ gnome-session-2.26.0.90/gnome-session/gsm-xsmp-client.c	2009-04-13 15:58:12.365981974 +0200
 @@ -69,6 +69,7 @@ enum {
  enum {
          REGISTER_REQUEST,
@@ -235,12 +266,13 @@
          LAST_SIGNAL
  };
  
-@@ -522,6 +523,26 @@ xsmp_cancel_end_session (GsmClient *clie
+@@ -522,6 +523,30 @@ xsmp_cancel_end_session (GsmClient *clie
          return TRUE;
  }
  
 +static gboolean
 +xsmp_request_save (GsmClient *client,
++                   guint      flags,
 +                   GError   **error)
 +{
 +        GsmXSMPClient *xsmp = (GsmXSMPClient *) client;
@@ -255,14 +287,17 @@
 +                return FALSE;
 +        }
 +
-+        do_save_yourself (xsmp, SmSaveLocal, FALSE);
++        if (flags & GSM_CLIENT_END_SESSION_FLAG_LAST)
++                xsmp_save_yourself_phase2 (client);
++        else
++                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
+@@ -982,6 +1007,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;
  
@@ -270,7 +305,7 @@
          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
+@@ -1012,6 +1038,17 @@ gsm_xsmp_client_class_init (GsmXSMPClien
                                G_TYPE_NONE,
                                1, G_TYPE_BOOLEAN);
  
@@ -427,21 +462,23 @@
 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
++++ gnome-session-2.26.0.90/gnome-session/gsm-client.h	2009-04-13 15:52:13.745978035 +0200
+@@ -92,6 +92,9 @@ struct _GsmClientClass
                                                                GError   **error);
          gboolean              (*impl_stop)                   (GsmClient *client,
                                                                GError   **error);
 +        gboolean              (*impl_request_save)           (GsmClient *client,
++                                                              guint      flags,
 +                                                              GError   **error);
          GKeyFile *            (*impl_save)                   (GsmClient *client,
                                                                GError   **error);
  };
-@@ -137,6 +139,8 @@ gboolean              gsm_client_cancel_
+@@ -137,6 +140,9 @@ gboolean              gsm_client_cancel_
  
  void                  gsm_client_disconnected               (GsmClient  *client);
  
 +gboolean              gsm_client_request_save               (GsmClient  *client,
++                                                             guint       flags,
 +                                                             GError    **error);
  GKeyFile             *gsm_client_save                       (GsmClient  *client,
                                                               GError    **error);
@@ -449,13 +486,14 @@
 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
++++ gnome-session-2.26.0.90/gnome-session/gsm-dbus-client.c	2009-04-13 15:53:12.573979150 +0200
+@@ -413,6 +413,19 @@ gsm_dbus_client_finalize (GObject *objec
          G_OBJECT_CLASS (gsm_dbus_client_parent_class)->finalize (object);
  }
  
 +static gboolean
 +dbus_client_request_save (GsmClient *client,
++                          guint      flags,
 +                          GError   **error)
 +{
 +        g_debug ("GsmDBusClient: sending save request to client with id %s",
@@ -469,7 +507,7 @@
  static GKeyFile *
  dbus_client_save (GsmClient *client,
                    GError   **error)
-@@ -665,6 +677,7 @@ gsm_dbus_client_class_init (GsmDBusClien
+@@ -665,6 +678,7 @@ gsm_dbus_client_class_init (GsmDBusClien
          object_class->set_property         = gsm_dbus_client_set_property;
          object_class->dispose              = gsm_dbus_client_dispose;
  
@@ -480,18 +518,19 @@
 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
++++ gnome-session-2.26.0.90/gnome-session/gsm-client.c	2009-04-13 15:52:36.933978536 +0200
+@@ -510,6 +510,16 @@ gsm_client_disconnected (GsmClient *clie
          g_signal_emit (client, signals[DISCONNECTED], 0);
  }
  
 +gboolean
 +gsm_client_request_save (GsmClient *client,
++                         guint      flags,
 +                         GError   **error)
 +{
 +        g_return_val_if_fail (GSM_IS_CLIENT (client), FALSE);
 +
-+        return GSM_CLIENT_GET_CLASS (client)->impl_request_save (client, error);
++        return GSM_CLIENT_GET_CLASS (client)->impl_request_save (client, flags, error);
 +}
 +
  GKeyFile *




More information about the pkg-gnome-commits mailing list