[Pkg-xfce-commits] r4565 - in desktop/branches/experimental/xfce4-session/debian: . patches

Yves-Alexis Perez corsac at alioth.debian.org
Sat Nov 13 06:42:43 UTC 2010


Author: corsac
Date: 2010-11-13 18:42:41 +0000 (Sat, 13 Nov 2010)
New Revision: 4565

Added:
   desktop/branches/experimental/xfce4-session/debian/patches/03_fix-suspend-hibernate.patch
Modified:
   desktop/branches/experimental/xfce4-session/debian/changelog
   desktop/branches/experimental/xfce4-session/debian/patches/series
Log:
03_fix-suspend-hibernate added, brings back suspend and hibernate in
logout box. (Xfce #6817)

Modified: desktop/branches/experimental/xfce4-session/debian/changelog
===================================================================
--- desktop/branches/experimental/xfce4-session/debian/changelog	2010-11-13 14:11:33 UTC (rev 4564)
+++ desktop/branches/experimental/xfce4-session/debian/changelog	2010-11-13 18:42:41 UTC (rev 4565)
@@ -5,6 +5,8 @@
   * debian/patches:
     - 02_fix-fortune-path refreshed.
     - 04_gk-dont-check-running-use-start refreshed. 
+    - 03_fix-suspend-hibernate added, brings back suspend and hibernate in
+      logout box. (Xfce #6817)
   * debian/control:
     - refresh build-deps for Xfce 4.7.
     - add build-dep on hardening-includes.
@@ -33,7 +35,7 @@
     - 04_gk-dont-check-running-use-start.patch: ditto
     - 05_reuse-existing-ck-session.patch: dropped too.
 
- -- Yves-Alexis Perez <corsac at debian.org>  Fri, 05 Nov 2010 09:14:25 +0100
+ -- Yves-Alexis Perez <corsac at debian.org>  Sat, 13 Nov 2010 00:54:33 +0100
 
 xfce4-session (4.6.2-2) unstable; urgency=low
 

Added: desktop/branches/experimental/xfce4-session/debian/patches/03_fix-suspend-hibernate.patch
===================================================================
--- desktop/branches/experimental/xfce4-session/debian/patches/03_fix-suspend-hibernate.patch	                        (rev 0)
+++ desktop/branches/experimental/xfce4-session/debian/patches/03_fix-suspend-hibernate.patch	2010-11-13 18:42:41 UTC (rev 4565)
@@ -0,0 +1,180 @@
+commit 394a43c96387ec1c294105b6fa8ea610d5e381dc
+Author: Jannis Pohlmann <jannis at xfce.org>
+Date:   Sat Nov 13 12:57:19 2010 +0100
+
+    Don't use "unix-session" authorization with PolicyKit (bug #6817).
+    
+    This fixes suspend/hibernate in xfce4-session-logout. For some reason
+    PolicyKit either has a broken "unix-session" implementation or no
+    implementation at all. So most GNOME apps seem to use "unix-process".
+
+diff --git a/NEWS b/NEWS
+index 7b4724c..91ea154 100644
+--- a/NEWS
++++ b/NEWS
+@@ -1,3 +1,9 @@
++4.7.2
++=====
++- Do not try "unix-session" authorization with PolicyKit as this 
++  seems to be either broken or not implemented in PolicyKit (bug #6817).
++  This fixes suspend/hibernate in xfce4-session-logout.
++
+ 4.7.1
+ =====
+ - Add support for new gnome-keyring (bugs #5912, #5137 and #6073).
+diff --git a/xfce4-session/xfsm-shutdown-helper.c b/xfce4-session/xfsm-shutdown-helper.c
+index e6c2817..9f902ad 100644
+--- a/xfce4-session/xfsm-shutdown-helper.c
++++ b/xfce4-session/xfsm-shutdown-helper.c
+@@ -331,11 +331,9 @@ init_dbus_gtypes (void)
+ static gboolean
+ xfsm_shutdown_helper_init_polkit_data (XfsmShutdownHelper *helper)
+ {
+-#ifdef ENABLE_CONSOLE_KIT
+-  const gchar *consolekit_cookie;
+-#endif
+   GValue hash_elem = { 0 };
+-  gboolean subject_created = FALSE;
++  guint64 start_time;
++  gint pid;
+ 
+   helper->polkit_proxy =
+     dbus_g_proxy_new_for_name (helper->system_bus,
+@@ -346,112 +344,41 @@ xfsm_shutdown_helper_init_polkit_data (XfsmShutdownHelper *helper)
+   if (!helper->polkit_proxy)
+     return FALSE;
+ 
+-#ifdef ENABLE_CONSOLE_KIT
+-  /**
+-   * This variable should be set by the session manager or by
+-   * the login manager (gdm?). under clean Xfce environment
+-   * it is set by the session manager (4.8 and above)
+-   * since we don't have a login manager, yet!
+-   **/
+-  consolekit_cookie = g_getenv ("XDG_SESSION_COOKIE");
+-
+-  if (consolekit_cookie)
+-    {
+-      DBusGProxy *proxy;
+-      GError *error = NULL;
+-      gboolean ret;
+-      gchar *consolekit_session;
+-
+-      proxy  = dbus_g_proxy_new_for_name (helper->system_bus,
+-                                          "org.freedesktop.ConsoleKit",
+-                                          "/org/freedesktop/ConsoleKit/Manager",
+-                                          "org.freedesktop.ConsoleKit.Manager");
++  pid = getpid ();
+ 
+-      if (proxy)
+-        {
+-          ret = dbus_g_proxy_call (proxy, "GetSessionForCookie", &error,
+-                                   G_TYPE_STRING, consolekit_cookie,
+-                                   G_TYPE_INVALID,
+-                                   DBUS_TYPE_G_OBJECT_PATH, &consolekit_session,
+-                                   G_TYPE_INVALID);
++  start_time = get_start_time_for_pid (pid);
+ 
+-          if (G_LIKELY (ret))
+-            {
+-              GValue val  = { 0 };
++  if (G_LIKELY (start_time != 0))
++    {
++      GValue val = { 0 }, pid_val = { 0 }, start_time_val = { 0 };
+ 
+-              helper->polkit_subject = g_value_array_new (2);
+-              helper->polkit_subject_hash = g_hash_table_new_full (g_str_hash,
+-                                                                   g_str_equal,
+-                                                                   g_free, NULL);
+-              g_value_init (&val, G_TYPE_STRING);
+-              g_value_set_string (&val, "unix-session");
+-              g_value_array_append (helper->polkit_subject, &val);
++      helper->polkit_subject = g_value_array_new (2);
++      helper->polkit_subject_hash = g_hash_table_new_full (g_str_hash,
++                                                           g_str_equal,
++                                                           g_free, NULL);
++      g_value_init (&val, G_TYPE_STRING);
++      g_value_set_string (&val, "unix-process");
++      g_value_array_append (helper->polkit_subject, &val);
+ 
+-              g_value_unset (&val);
+-              g_value_init (&val, G_TYPE_STRING);
+-              g_value_set_string (&val, consolekit_session);
++      g_value_unset (&val);
+ 
+-              g_hash_table_insert (helper->polkit_subject_hash, g_strdup ("session-id"), &val);
++      g_value_init (&pid_val, G_TYPE_UINT);
++      g_value_set_uint (&pid_val, pid);
++      g_hash_table_insert (helper->polkit_subject_hash, g_strdup ("pid"), &pid_val);
+ 
+-              g_free (consolekit_session);
+-              subject_created = TRUE;
+-            }
+-          else if (error)
+-            {
+-              g_warning ("'GetSessionForCookie' failed : %s", error->message);
+-              g_error_free (error);
+-            }
+-          g_object_unref (proxy);
+-        }
++      g_value_init (&start_time_val, G_TYPE_UINT64);
++      g_value_set_uint64 (&start_time_val, start_time);
++      g_hash_table_insert (helper->polkit_subject_hash, g_strdup ("start-time"), &start_time_val);
+     }
+-#endif
+-
+-  /**
+-   * We failed to get valid session data, then we try
+-   * to check authentication using the pid.
+-   **/
+-  if (subject_created == FALSE)
++  else
+     {
+-      gint pid;
+-      guint64 start_time;
+-
+-      pid = getpid ();
+-
+-      start_time = get_start_time_for_pid (pid);
+-
+-      if (G_LIKELY (start_time != 0))
+-        {
+-          GValue val = { 0 }, pid_val = { 0 }, start_time_val = { 0 };
+-
+-          helper->polkit_subject = g_value_array_new (2);
+-          helper->polkit_subject_hash = g_hash_table_new_full (g_str_hash,
+-                                                               g_str_equal,
+-                                                               g_free, NULL);
+-          g_value_init (&val, G_TYPE_STRING);
+-          g_value_set_string (&val, "unix-process");
+-          g_value_array_append (helper->polkit_subject, &val);
+-
+-          g_value_unset (&val);
+-
+-          g_value_init (&pid_val, G_TYPE_UINT);
+-          g_value_set_uint (&pid_val, pid);
+-          g_hash_table_insert (helper->polkit_subject_hash, g_strdup ("pid"), &pid_val);
+-
+-          g_value_init (&start_time_val, G_TYPE_UINT64);
+-          g_value_set_uint64 (&start_time_val, start_time);
+-          g_hash_table_insert (helper->polkit_subject_hash, g_strdup ("start-time"), &start_time_val);
+-        }
+-      else
+-        {
+-          g_warning ("Unable to create Polkit subject");
+-          return FALSE;
+-        }
++      g_warning ("Unable to create Polkit subject");
++      return FALSE;
+     }
++  
+ 
+-  g_value_init (&hash_elem,
+-  dbus_g_type_get_map ("GHashTable",
+-                       G_TYPE_STRING,
+-                       G_TYPE_VALUE));
++  g_value_init (&hash_elem, 
++                dbus_g_type_get_map ("GHashTable", G_TYPE_STRING, G_TYPE_VALUE));
+ 
+   g_value_set_static_boxed (&hash_elem, helper->polkit_subject_hash);
+   g_value_array_append (helper->polkit_subject, &hash_elem);

Modified: desktop/branches/experimental/xfce4-session/debian/patches/series
===================================================================
--- desktop/branches/experimental/xfce4-session/debian/patches/series	2010-11-13 14:11:33 UTC (rev 4564)
+++ desktop/branches/experimental/xfce4-session/debian/patches/series	2010-11-13 18:42:41 UTC (rev 4565)
@@ -1,2 +1,3 @@
 01_correct_shadows.patch
 02_fix-fortune-path.patch
+03_fix-suspend-hibernate.patch




More information about the Pkg-xfce-commits mailing list