[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