diff options
Diffstat (limited to 'recipes-lxde/lxsession/lxsession-0.4.9.2')
3 files changed, 0 insertions, 1497 deletions
diff --git a/recipes-lxde/lxsession/lxsession-0.4.9.2/0001-lxsession-logout-fix-dbus-string-value-check-for-sys.patch b/recipes-lxde/lxsession/lxsession-0.4.9.2/0001-lxsession-logout-fix-dbus-string-value-check-for-sys.patch deleted file mode 100644 index 624d036..0000000 --- a/recipes-lxde/lxsession/lxsession-0.4.9.2/0001-lxsession-logout-fix-dbus-string-value-check-for-sys.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 2b320b7f64fa04d59a04b00b2f0877c6d3427252 Mon Sep 17 00:00:00 2001 -From: Stefan Agner <stefan.agner@toradex.com> -Date: Wed, 29 Oct 2014 14:35:25 +0100 -Subject: [PATCH] lxsession-logout: fix dbus string value check for systemd - -The string values have not been checked to be equal to "yes" or -"challenge", but to be other than equal. This is always true because -we compare two different strings. Fix the check, either "yes" or -"challenge" need to be returned to return TRUE now. - -Upstream-Status: submitted ---- - lxsession-logout/lxsession-logout-dbus-interface.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lxsession-logout/lxsession-logout-dbus-interface.c b/lxsession-logout/lxsession-logout-dbus-interface.c -index 3404615..6dde18a 100644 ---- a/lxsession-logout/lxsession-logout-dbus-interface.c -+++ b/lxsession-logout/lxsession-logout-dbus-interface.c -@@ -189,7 +189,7 @@ systemd_query (const gchar *function, gboolean default_result, GError **error) - if (g_variant_is_of_type (result, G_VARIANT_TYPE ("(s)"))) - { - g_variant_get (result, "(s)", &str); -- if (g_strcmp0 (str, "yes") || g_strcmp0 (str, "challenge")) -+ if (!g_strcmp0 (str, "yes") || !g_strcmp0 (str, "challenge")) - function_result = TRUE; - else - function_result = default_result; --- -2.1.2 - diff --git a/recipes-lxde/lxsession/lxsession-0.4.9.2/lxsession-configure-ac.patch b/recipes-lxde/lxsession/lxsession-0.4.9.2/lxsession-configure-ac.patch deleted file mode 100644 index 82e9eb7..0000000 --- a/recipes-lxde/lxsession/lxsession-0.4.9.2/lxsession-configure-ac.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- lxsession-0.4.9.2/configure.ac.orig 2014-04-30 17:40:58.544706818 +0200 -+++ lxsession-0.4.9.2/configure.ac 2014-04-30 17:38:27.425430368 +0200 -@@ -2,7 +2,7 @@ - AC_INIT([lxsession],[0.4.9.2],[],[lxsession]) - - # Autotols programs --AM_INIT_AUTOMAKE([1.11.1 -Wall -Werror foreign]) -+AM_INIT_AUTOMAKE([1.11.1 -Wall -Werror foreign subdir-objects]) - AC_PREREQ([2.69]) - IT_PROG_INTLTOOL([0.40.0],[no-xml]) - diff --git a/recipes-lxde/lxsession/lxsession-0.4.9.2/lxsession-logout-git-62bfec81f6c50083423b8501a94be80125396966.patch b/recipes-lxde/lxsession/lxsession-0.4.9.2/lxsession-logout-git-62bfec81f6c50083423b8501a94be80125396966.patch deleted file mode 100644 index 464de95..0000000 --- a/recipes-lxde/lxsession/lxsession-0.4.9.2/lxsession-logout-git-62bfec81f6c50083423b8501a94be80125396966.patch +++ /dev/null @@ -1,1455 +0,0 @@ -Update lxsession-logout to newer git revision. -This ensures that shutdown, reboot etc. can be done with the help of logind. -Without this we get a segfault when using the nonconsistent implementation for logind. -i.e. function prototypes and implementation do not much. -diff -Naur lxsession-0.4.9.2/lxsession-logout.orig/dbus-interface.c lxsession-0.4.9.2/lxsession-logout/dbus-interface.c ---- lxsession-0.4.9.2/lxsession-logout.orig/dbus-interface.c 2013-04-12 23:02:19.000000000 +0200 -+++ lxsession-0.4.9.2/lxsession-logout/dbus-interface.c 1970-01-01 01:00:00.000000000 +0100 -@@ -1,641 +0,0 @@ --/** -- * Copyright (c) 2010 LxDE Developers, see the file AUTHORS for details. -- * -- * This program is free software; you can redistribute it and/or modify -- * it under the terms of the GNU General Public License as published by -- * the Free Software Foundation; either version 2 of the License, or -- * (at your option) any later version. -- * -- * This program is distributed in the hope that it will be useful, -- * but WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- * GNU General Public License for more details. -- * -- * You should have received a copy of the GNU General Public License -- * along with this program; if not, write to the Free Software Foundation, -- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -- */ -- --#include <config.h> --#include <glib.h> --#include <string.h> --#include <dbus/dbus.h> --#include <gio/gio.h> -- --/*** Mechanism independent ***/ -- --/* D-Bus context. */ --static struct { -- int connection_tried : 1; /* True if connection has been tried */ -- DBusConnection * connection; /* Handle for connection */ --} dbus_context; -- --static GDBusProxy *logind_proxy = NULL; -- --enum { DBUS_TIMEOUT = 60000 }; /* Reply timeout */ -- --/* FORWARDS */ --gboolean dbus_ConsoleKit_CanStop(void); --gboolean dbus_ConsoleKit_CanRestart(void); --char * dbus_ConsoleKit_Stop(void); --char * dbus_ConsoleKit_Restart(void); --gboolean dbus_UPower_CanSuspend(void); --gboolean dbus_UPower_CanHibernate(void); --char * dbus_UPower_Suspend(void); --char * dbus_UPower_Hibernate(void); --gboolean dbus_HAL_CanShutdown(void); --gboolean dbus_HAL_CanReboot(void); --gboolean dbus_HAL_CanSuspend(void); --gboolean dbus_HAL_CanHibernate(void); --char * dbus_HAL_Shutdown(void); --char * dbus_HAL_Reboot(void); --char * dbus_HAL_Suspend(void); --char * dbus_HAL_Hibernate(void); --char * dbus_LXDE_Logout(void); --/* End FORWARDS */ -- --/* Connect to the system bus. Once a connection is made, it is saved for reuse. */ --static DBusConnection * dbus_connect_system(void) --{ -- DBusError error; -- dbus_error_init(&error); -- dbus_context.connection = dbus_bus_get(DBUS_BUS_SYSTEM, &error); -- if (dbus_context.connection == NULL) -- { -- g_warning(G_STRLOC ": Failed to connect to the system message bus: %s", error.message); -- dbus_error_free(&error); -- } -- dbus_context.connection_tried = TRUE; -- -- return dbus_context.connection; --} -- --static DBusConnection * dbus_connect_session(void) --{ -- DBusError error; -- dbus_error_init(&error); -- dbus_context.connection = dbus_bus_get(DBUS_BUS_SESSION, &error); -- if (dbus_context.connection == NULL) -- { -- g_warning(G_STRLOC ": Failed to connect to the session message bus: %s", error.message); -- dbus_error_free(&error); -- } -- dbus_context.connection_tried = TRUE; -- -- return dbus_context.connection; --} -- -- --/* Send a message. */ --static DBusMessage * dbus_send_message_system(DBusMessage * message, char * * error_text) --{ -- /* Get a connection handle. */ -- DBusConnection * connection = dbus_connect_system(); -- if (connection == NULL) -- return FALSE; -- -- /* Send the message. */ -- DBusError error; -- dbus_error_init(&error); -- DBusMessage * reply = dbus_connection_send_with_reply_and_block(connection, message, DBUS_TIMEOUT, &error); -- dbus_message_unref(message); -- if (reply == NULL) -- { -- if ((error.name == NULL) || (strcmp(error.name, DBUS_ERROR_NO_REPLY) != 0)) -- { -- if (error_text != NULL) -- *error_text = g_strdup(error.message); -- g_warning(G_STRLOC ": DBUS: %s", error.message); -- } -- dbus_error_free(&error); -- } -- return reply; --} -- --/* Send a message. */ --static DBusMessage * dbus_send_message_session(DBusMessage * message, char * * error_text) --{ -- /* Get a connection handle. */ -- DBusConnection * connection = dbus_connect_session(); -- if (connection == NULL) -- return FALSE; -- -- /* Send the message. */ -- DBusError error; -- dbus_error_init(&error); -- DBusMessage * reply = dbus_connection_send_with_reply_and_block(connection, message, DBUS_TIMEOUT, &error); -- dbus_message_unref(message); -- if (reply == NULL) -- { -- if ((error.name == NULL) || (strcmp(error.name, DBUS_ERROR_NO_REPLY) != 0)) -- { -- if (error_text != NULL) -- *error_text = g_strdup(error.message); -- g_warning(G_STRLOC ": DBUS: %s", error.message); -- } -- dbus_error_free(&error); -- } -- return reply; --} -- --/* Read a result for a method that returns void. */ --static char * dbus_read_result_void(DBusMessage * reply) --{ -- if (reply != NULL) -- dbus_message_unref(reply); -- -- /* No result. Assume success. */ -- return NULL; --} -- --/* Read a result for a method that returns boolean. */ --static gboolean dbus_read_result_boolean(DBusMessage * reply) --{ -- gboolean result = FALSE; -- if (reply != NULL) -- { -- /* Get the boolean result. */ -- DBusError error; -- dbus_error_init(&error); -- dbus_bool_t status = dbus_message_get_args( -- reply, -- &error, -- DBUS_TYPE_BOOLEAN, &result, -- DBUS_TYPE_INVALID); -- dbus_message_unref(reply); -- if ( ! status) -- { -- g_warning(G_STRLOC ": DBUS: %s", error.message); -- dbus_error_free(&error); -- return FALSE; -- } -- } -- return result; --} -- --/* Read a result for a method that returns string. */ --static char * dbus_read_result_string(DBusMessage * reply) --{ -- char * result = FALSE; -- if (reply != NULL) -- { -- /* Get the boolean result. */ -- DBusError error; -- dbus_error_init(&error); -- dbus_bool_t status = dbus_message_get_args( -- reply, -- &error, -- DBUS_TYPE_STRING, &result, -- DBUS_TYPE_INVALID); -- dbus_message_unref(reply); -- if ( ! status) -- { -- g_warning(G_STRLOC ": DBUS: %s", error.message); -- dbus_error_free(&error); -- return NULL; -- } -- } -- return result; --} -- --/*** logind mechanism ***/ -- --static gboolean --logind_query (const gchar *function, gboolean default_result, GError **error) --{ -- GVariant *result; -- gboolean function_result = FALSE; -- const gchar *str; -- -- if (!logind_proxy) -- { -- logind_proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM, -- G_DBUS_PROXY_FLAGS_NONE, -- NULL, -- "org.freedesktop.login1", -- "/org/freedesktop/login1", -- "org.freedesktop.login1.Manager", -- NULL, -- error); -- if (!logind_proxy) -- return FALSE; -- } -- -- result = g_dbus_proxy_call_sync (logind_proxy, -- function, -- NULL, -- G_DBUS_CALL_FLAGS_NONE, -- -1, -- NULL, -- error); -- if (!result) -- return default_result; -- -- if (g_variant_is_of_type (result, G_VARIANT_TYPE ("(s)"))) -- { -- g_variant_get (result, "(s)", &str); -- if (g_strcmp0 (str, "yes") || g_strcmp0 (str, "challenge")) -- function_result = TRUE; -- else -- function_result = default_result; -- } -- -- g_variant_unref (result); -- return function_result; --} -- --static void --logind_call_function (const gchar *function, gboolean value, GError **error) --{ -- GVariant *result; -- -- if (!logind_proxy) -- { -- logind_proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM, -- G_DBUS_PROXY_FLAGS_NONE, -- NULL, -- "org.freedesktop.login1", -- "/org/freedesktop/login1", -- "org.freedesktop.login1.Manager", -- NULL, -- error); -- if (!logind_proxy) -- return; -- } -- -- result = g_dbus_proxy_call_sync (logind_proxy, -- function, -- g_variant_new ("(b)", value), -- G_DBUS_CALL_FLAGS_NONE, -- -1, -- NULL, -- error); -- g_variant_unref (result); -- return; --} -- --gboolean --dbus_logind_CanPowerOff (void) --{ -- return logind_query ("CanPowerOff", FALSE, NULL); --} -- --void --dbus_logind_PowerOff (GError **error) --{ -- logind_call_function ("PowerOff", TRUE, error); --} -- --gboolean --dbus_logind_CanReboot (void) --{ -- return logind_query ("CanReboot", FALSE, NULL); --} -- --void --dbus_logind_Reboot (GError **error) --{ -- logind_call_function ("Reboot", TRUE, error); --} -- --gboolean --dbus_logind_CanSuspend (void) --{ -- return logind_query ("CanSuspend", FALSE, NULL); --} -- --void --dbus_logind_Suspend (GError **error) --{ -- logind_call_function ("Suspend", TRUE, error); --} -- --gboolean --dbus_logind_CanHibernate (void) --{ -- return logind_query ("CanHibernate", FALSE, NULL); --} -- --void --dbus_logind_Hibernate (GError **error) --{ -- logind_call_function ("Hibernate", TRUE, error); --} -- --/*** ConsoleKit mechanism ***/ -- --/* Formulate a message to the ConsoleKit Manager interface. */ --static DBusMessage * dbus_ConsoleKit_formulate_message(const char * const query) --{ -- return dbus_message_new_method_call( -- "org.freedesktop.ConsoleKit", -- "/org/freedesktop/ConsoleKit/Manager", -- "org.freedesktop.ConsoleKit.Manager", -- query); --} -- --/* Send a specified message to the ConsoleKit interface and process a boolean result. */ --static gboolean dbus_ConsoleKit_query(const char * const query) --{ -- return dbus_read_result_boolean(dbus_send_message_system(dbus_ConsoleKit_formulate_message(query), NULL)); --} -- --/* Send a specified message to the ConsoleKit interface and process a void result. */ --static char * dbus_ConsoleKit_command(const char * const command) --{ -- char * error = NULL; -- dbus_read_result_void(dbus_send_message_system(dbus_ConsoleKit_formulate_message(command), &error)); -- return error; --} -- --/* Invoke the CanStop method on ConsoleKit. */ --gboolean dbus_ConsoleKit_CanStop(void) --{ -- return dbus_ConsoleKit_query("CanStop"); --} -- --/* Invoke the CanRestart method on ConsoleKit. */ --gboolean dbus_ConsoleKit_CanRestart(void) --{ -- return dbus_ConsoleKit_query("CanRestart"); --} -- --/* Invoke the Stop method on ConsoleKit. */ --char * dbus_ConsoleKit_Stop(void) --{ -- return dbus_ConsoleKit_command("Stop"); --} -- --/* Invoke the Restart method on ConsoleKit. */ --char * dbus_ConsoleKit_Restart(void) --{ -- return dbus_ConsoleKit_command("Restart"); --} -- --/*** UPower mechanism ***/ -- --/* Formulate a message to the UPower interface. */ --static DBusMessage * dbus_UPower_formulate_command(const char * const command) --{ -- return dbus_message_new_method_call( -- "org.freedesktop.UPower", -- "/org/freedesktop/UPower", -- "org.freedesktop.UPower", -- command); --} -- --/* Send a specified message to the UPower interface and process a boolean result. */ --static gboolean dbus_UPower_query(const char * const query) --{ -- /* Formulate a message to the Properties interface. */ -- DBusMessage * message = dbus_message_new_method_call( -- "org.freedesktop.UPower", -- "/org/freedesktop/UPower", -- "org.freedesktop.DBus.Properties", -- "Get"); -- const char * const interface_name = "org.freedesktop.UPower"; -- dbus_message_append_args(message, -- DBUS_TYPE_STRING, &interface_name, -- DBUS_TYPE_STRING, &query, -- DBUS_TYPE_INVALID); -- -- /* Send the message. */ -- DBusMessage * reply = dbus_send_message_system(message, NULL); -- if (reply == NULL) -- return FALSE; -- -- /* The return type is VARIANT expected to contain BOOLEAN. */ -- gboolean result = FALSE; -- DBusMessageIter iter; -- DBusMessageIter inner; -- dbus_message_iter_init(reply, &iter); -- if (dbus_message_iter_get_arg_type(&iter) == DBUS_TYPE_VARIANT) -- { -- dbus_message_iter_recurse(&iter, &inner); -- if (dbus_message_iter_get_arg_type(&inner) == DBUS_TYPE_BOOLEAN) -- dbus_message_iter_get_basic(&inner, &result); -- } -- dbus_message_unref(reply); -- return result; --} -- --/* Send a specified message to the UPower interface and process a void result. */ --static char * dbus_UPower_command(const char * const command) --{ -- char * error = NULL; -- dbus_read_result_void(dbus_send_message_system(dbus_UPower_formulate_command(command), &error)); -- return error; --} -- --/* Read the can-suspend property of UPower. */ --gboolean dbus_UPower_CanSuspend(void) --{ -- return dbus_UPower_query("CanSuspend"); --} -- --/* Read the can-hibernate property of UPower. */ --gboolean dbus_UPower_CanHibernate(void) --{ -- return dbus_UPower_query("CanHibernate"); --} -- --/* Invoke the Suspend method on UPower. */ --char * dbus_UPower_Suspend(void) --{ -- return dbus_UPower_command("Suspend"); --} -- --/* Invoke the Hibernate method on UPower. */ --char * dbus_UPower_Hibernate(void) --{ -- return dbus_UPower_command("Hibernate"); --} -- --/*** HAL mechanism ***/ -- --/* Formulate a message to the HAL SystemPowerManagement interface. */ --static DBusMessage * dbus_HAL_formulate_message(const char * const query) --{ -- return dbus_message_new_method_call( -- "org.freedesktop.Hal", -- "/org/freedesktop/Hal/devices/computer", -- "org.freedesktop.Hal.Device.SystemPowerManagement", -- query); --} -- --/* Formulate a message to the HAL SystemPowerManagement interface to query a property. */ --static DBusMessage * dbus_HAL_formulate_property_query(const char * const method, const char * const property) --{ -- DBusMessage * message = dbus_message_new_method_call( -- "org.freedesktop.Hal", -- "/org/freedesktop/Hal/devices/computer", -- "org.freedesktop.Hal.Device", -- method); -- if (message != NULL) -- dbus_message_append_args(message, DBUS_TYPE_STRING, &property, DBUS_TYPE_INVALID); -- return message; --} -- --/* Formulate a message to the HAL SystemPowerManagement interface to query a boolean property. */ --static DBusMessage * dbus_HAL_formulate_boolean_property_query(const char * const property) --{ -- return dbus_HAL_formulate_property_query("GetPropertyBoolean", property); --} -- --/* Formulate a message to the HAL SystemPowerManagement interface to query a string property. */ --static DBusMessage * dbus_HAL_formulate_string_property_query(const char * const property) --{ -- return dbus_HAL_formulate_property_query("GetPropertyString", property); --} -- --/* Send a specified property query to the HAL interface and process whether the result exists. */ --static gboolean dbus_HAL_string_exists_query(const char * const property) --{ -- DBusMessage * message = dbus_HAL_formulate_string_property_query(property); -- if (message == NULL) -- return FALSE; -- DBusMessage * reply = dbus_send_message_system(message, NULL); -- if (reply == NULL) -- return FALSE; -- dbus_message_unref(reply); -- return TRUE; --} -- --/* Send a specified property query to the HAL interface and process a boolean result. */ --static gboolean dbus_HAL_boolean_query(const char * const property) --{ -- return dbus_read_result_boolean(dbus_send_message_system(dbus_HAL_formulate_boolean_property_query(property), NULL)); --} -- --/* Send a specified message to the HAL interface and process a void result. */ --static char * dbus_HAL_command(const char * const command) --{ -- /* Formulate the message. */ -- DBusMessage * message = dbus_HAL_formulate_message(command); -- if (message == NULL) -- return NULL; -- -- /* Suspend has an argument. */ -- if (strcmp(command, "Suspend") == 0) -- { -- dbus_int32_t suspend_arg = 0; -- dbus_message_append_args(message, DBUS_TYPE_INT32, &suspend_arg, DBUS_TYPE_INVALID); -- } -- -- /* Send the message and wait for a reply. */ -- char * error = NULL; -- dbus_read_result_void(dbus_send_message_system(message, &error)); -- return error; --} -- --/* Read the can-shutdown property of HAL. */ --gboolean dbus_HAL_CanShutdown(void) --{ -- return dbus_HAL_string_exists_query("power_management.type"); --} -- --/* Read the can-reboot property of HAL. */ --gboolean dbus_HAL_CanReboot(void) --{ -- return dbus_HAL_string_exists_query("power_management.type"); --} -- --/* Read the can-suspend property of HAL. */ --gboolean dbus_HAL_CanSuspend(void) --{ -- return dbus_HAL_boolean_query("power_management.can_suspend"); --} -- --/* Read the can-hibernate property of HAL. */ --gboolean dbus_HAL_CanHibernate(void) --{ -- return dbus_HAL_boolean_query("power_management.can_hibernate"); --} -- --/* Invoke the Shutdown method on HAL. */ --char * dbus_HAL_Shutdown(void) --{ -- return dbus_HAL_command("Shutdown"); --} -- --/* Invoke the Reboot method on HAL. */ --char * dbus_HAL_Reboot(void) --{ -- return dbus_HAL_command("Reboot"); --} -- --/* Invoke the Suspend method on HAL. */ --char * dbus_HAL_Suspend(void) --{ -- return dbus_HAL_command("Suspend"); --} -- --/* Invoke the Hibernate method on HAL. */ --char * dbus_HAL_Hibernate(void) --{ -- return dbus_HAL_command("Hibernate"); --} -- --/*** LXDE mechanism ***/ -- --/* Formulate a message to the LXDE Session Manager interface. */ --static DBusMessage * dbus_LXDE_formulate_message(const char * const query) --{ -- return dbus_message_new_method_call( -- "org.lxde.SessionManager", -- "/org/lxde/SessionManager", -- "org.lxde.SessionManager", -- query); --} -- --/* Send a specified message to the LXDE interface and process a boolean result. */ --static gboolean dbus_LXDE_query(const char * const query) --{ -- return dbus_read_result_boolean(dbus_send_message_session(dbus_LXDE_formulate_message(query), NULL)); --} -- --/* Send a specified message to the LXDE interface and process a void result. */ --static char * dbus_LXDE_command(const char * const command) --{ -- char * error = NULL; -- dbus_read_result_void(dbus_send_message_session(dbus_LXDE_formulate_message(command), &error)); -- return error; --} -- --/* Invoke the Logout method on LXDE. */ --char * dbus_LXDE_Logout(void) --{ -- return dbus_LXDE_command("Logout"); --} -- --/*** Lightdm mechanism ***/ -- --/* Formulate a message to the Lightdm interface. */ --static DBusMessage * dbus_Lightdm_formulate_message(const char * const query) --{ -- return dbus_message_new_method_call( -- "org.freedesktop.DisplayManager", -- g_getenv ("XDG_SEAT_PATH"), -- "org.freedesktop.DisplayManager.Seat", -- query); --} -- --/* Send a specified message to the Lightdm interface and process a boolean result. */ --static gboolean dbus_Lightdm_query(const char * const query) --{ -- return dbus_read_result_boolean(dbus_send_message_session(dbus_Lightdm_formulate_message(query), NULL)); --} -- --/* Send a specified message to the Lightdm interface and process a void result. */ --static char * dbus_Lightdm_command(const char * const command) --{ -- char * error = NULL; -- dbus_read_result_void(dbus_send_message_session(dbus_Lightdm_formulate_message(command), &error)); -- return error; --} -- --/* Invoke the Logout method on LXDE. */ --char * dbus_Lightdm_SwitchToGreeter(void) --{ -- return dbus_Lightdm_command("SwitchToGreeter"); --} -diff -Naur lxsession-0.4.9.2/lxsession-logout.orig/dbus-interface.h lxsession-0.4.9.2/lxsession-logout/dbus-interface.h ---- lxsession-0.4.9.2/lxsession-logout.orig/dbus-interface.h 2013-03-10 12:48:25.000000000 +0100 -+++ lxsession-0.4.9.2/lxsession-logout/dbus-interface.h 1970-01-01 01:00:00.000000000 +0100 -@@ -1,61 +0,0 @@ --/** -- * Copyright (c) 2010 LxDE Developers, see the file AUTHORS for details. -- * -- * This program is free software; you can redistribute it and/or modify -- * it under the terms of the GNU General Public License as published by -- * the Free Software Foundation; either version 2 of the License, or -- * (at your option) any later version. -- * -- * This program is distributed in the hope that it will be useful, -- * but WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- * GNU General Public License for more details. -- * -- * You should have received a copy of the GNU General Public License -- * along with this program; if not, write to the Free Software Foundation, -- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -- */ -- --#ifndef _DBUS_INTERFACE_H --#define _DBUS_INTERFACE_H -- --#include <glib.h> -- --/* Interface to logind for shutdown, reboot, suspend and hibernate. */ --extern gboolean dbus_logind_CanPowerOff(void); --extern gboolean dbus_logind_CanReboot(void); --extern gboolean dbus_logind_CanSuspend(void); --extern gboolean dbus_logind_CanHibernate(void); --extern char * dbus_logind_PowerOff(void); --extern char * dbus_logind_Reboot(void); --extern char * dbus_logind_Suspend(void); --extern char * dbus_logind_Hibernate(void); -- --/* Interface to ConsoleKit for shutdown and reboot. */ --extern gboolean dbus_ConsoleKit_CanStop(void); --extern gboolean dbus_ConsoleKit_CanRestart(void); --extern char * dbus_ConsoleKit_Stop(void); --extern char * dbus_ConsoleKit_Restart(void); -- --/* Interface to UPower for suspend and hibernate. */ --extern gboolean dbus_UPower_CanSuspend(void); --extern gboolean dbus_UPower_CanHibernate(void); --extern char * dbus_UPower_Suspend(void); --extern char * dbus_UPower_Hibernate(void); -- --/* Interface to HAL for shutdown, reboot, suspend, and hibernate. -- * HAL is being replaced by the above two mechanisms; this support is legacy. */ --extern gboolean dbus_HAL_CanShutdown(void); --extern gboolean dbus_HAL_CanReboot(void); --extern gboolean dbus_HAL_CanSuspend(void); --extern gboolean dbus_HAL_CanHibernate(void); --extern char * dbus_HAL_Shutdown(void); --extern char * dbus_HAL_Reboot(void); --extern char * dbus_HAL_Suspend(void); --extern char * dbus_HAL_Hibernate(void); -- --extern char * dbus_LXDE_Logout(void); -- --extern char * dbus_Lightdm_SwitchToGreeter(); -- --#endif -diff -Naur lxsession-0.4.9.2/lxsession-logout.orig/lxsession-logout.c lxsession-0.4.9.2/lxsession-logout/lxsession-logout.c ---- lxsession-0.4.9.2/lxsession-logout.orig/lxsession-logout.c 2013-05-31 21:38:58.000000000 +0200 -+++ lxsession-0.4.9.2/lxsession-logout/lxsession-logout.c 2014-01-03 15:42:59.596454865 +0100 -@@ -36,7 +36,7 @@ - #include <X11/Xatom.h> - #include <X11/Xlib.h> - --#include "dbus-interface.h" -+#include "lxsession-logout-dbus-interface.h" - - /* Command parameters. */ - static char * prompt = NULL; -@@ -61,18 +61,14 @@ - int hibernate_available : 1; /* Hibernate is available */ - int switch_user_available : 1; /* Switch User is available */ - -- int shutdown_logind : 1; /* Shutdown is available via logind */ -- int reboot_logind : 1; /* Reboot is available via logind */ -- int suspend_logind : 1; /* Suspend is available via logind */ -- int hibernate_logind : 1; /* Hibernate is available via logind */ -+ int shutdown_systemd : 1; /* Shutdown is available via systemd */ -+ int reboot_systemd : 1; /* Reboot is available via systemd */ -+ int suspend_systemd : 1; /* Suspend is available via systemd */ -+ int hibernate_systemd : 1; /* Hibernate is available via systemd */ - int shutdown_ConsoleKit : 1; /* Shutdown is available via ConsoleKit */ - int reboot_ConsoleKit : 1; /* Reboot is available via ConsoleKit */ - int suspend_UPower : 1; /* Suspend is available via UPower */ - int hibernate_UPower : 1; /* Hibernate is available via UPower */ -- int shutdown_HAL : 1; /* Shutdown is available via HAL */ -- int reboot_HAL : 1; /* Reboot is available via HAL */ -- int suspend_HAL : 1; /* Suspend is available via HAL */ -- int hibernate_HAL : 1; /* Hibernate is available via HAL */ - int switch_user_GDM : 1; /* Switch User is available via GDM */ - int switch_user_LIGHTDM : 1; /* Switch User is available via GDM */ - int switch_user_KDM : 1; /* Switch User is available via LIGHTDM */ -@@ -212,7 +208,7 @@ - /* Handler for "clicked" signal on Shutdown button. */ - static void shutdown_clicked(GtkButton * button, HandlerContext * handler_context) - { -- char * error_result = NULL; -+ GError *err = NULL; - gtk_label_set_text(GTK_LABEL(handler_context->error_label), NULL); - - if (handler_context->ltsp) -@@ -224,21 +220,25 @@ - } - } - else if (handler_context->shutdown_ConsoleKit) -- error_result = dbus_ConsoleKit_Stop(); -- else if (handler_context->shutdown_logind) -- error_result = dbus_logind_PowerOff(); -- else if (handler_context->shutdown_HAL) -- error_result = dbus_HAL_Shutdown(); -- -- if (error_result != NULL) -- gtk_label_set_text(GTK_LABEL(handler_context->error_label), error_result); -- else gtk_main_quit(); -+ dbus_ConsoleKit_Stop(&err); -+ else if (handler_context->shutdown_systemd) -+ dbus_systemd_PowerOff(&err); -+ -+ if (err) -+ { -+ gtk_label_set_text(GTK_LABEL(handler_context->error_label), err->message); -+ g_error_free (err); -+ } -+ else -+ { -+ gtk_main_quit(); -+ } - } - - /* Handler for "clicked" signal on Reboot button. */ - static void reboot_clicked(GtkButton * button, HandlerContext * handler_context) - { -- char * error_result = NULL; -+ GError *err = NULL; - gtk_label_set_text(GTK_LABEL(handler_context->error_label), NULL); - - if (handler_context->ltsp) -@@ -250,58 +250,71 @@ - } - } - else if (handler_context->reboot_ConsoleKit) -- error_result = dbus_ConsoleKit_Restart(); -- else if (handler_context->reboot_logind) -- error_result = dbus_logind_Reboot(); -- else if (handler_context->reboot_HAL) -- error_result = dbus_HAL_Reboot(); -- -- if (error_result != NULL) -- gtk_label_set_text(GTK_LABEL(handler_context->error_label), error_result); -- else gtk_main_quit(); -+ dbus_ConsoleKit_Restart(&err); -+ else if (handler_context->reboot_systemd) -+ dbus_systemd_Reboot(&err); -+ -+ if (err) -+ { -+ gtk_label_set_text(GTK_LABEL(handler_context->error_label), err->message); -+ g_error_free (err); -+ } -+ else -+ { -+ gtk_main_quit(); -+ } - } - - /* Handler for "clicked" signal on Suspend button. */ - static void suspend_clicked(GtkButton * button, HandlerContext * handler_context) - { -- char * error_result = NULL; -+ GError *err = NULL; - gtk_label_set_text(GTK_LABEL(handler_context->error_label), NULL); - - lock_screen(); - if (handler_context->suspend_UPower) -- error_result = dbus_UPower_Suspend(); -- else if (handler_context->suspend_logind) -- error_result = dbus_logind_Suspend(); -- else if (handler_context->suspend_HAL) -- error_result = dbus_HAL_Suspend(); -- -- if (error_result != NULL) -- gtk_label_set_text(GTK_LABEL(handler_context->error_label), error_result); -- else gtk_main_quit(); -+ dbus_UPower_Suspend(&err); -+ else if (handler_context->suspend_systemd) -+ dbus_systemd_Suspend(&err); -+ -+ if (err) -+ { -+ gtk_label_set_text(GTK_LABEL(handler_context->error_label), err->message); -+ g_error_free (err); -+ } -+ else -+ { -+ gtk_main_quit(); -+ } - } - - /* Handler for "clicked" signal on Hibernate button. */ - static void hibernate_clicked(GtkButton * button, HandlerContext * handler_context) - { -- char * error_result = NULL; -+ GError *err = NULL; - gtk_label_set_text(GTK_LABEL(handler_context->error_label), NULL); - - lock_screen(); - if (handler_context->hibernate_UPower) -- error_result = dbus_UPower_Hibernate(); -- else if (handler_context->hibernate_logind) -- error_result = dbus_logind_Hibernate(); -- else if (handler_context->hibernate_HAL) -- error_result = dbus_HAL_Hibernate(); -- -- if (error_result != NULL) -- gtk_label_set_text(GTK_LABEL(handler_context->error_label), error_result); -- else gtk_main_quit(); -+ dbus_UPower_Hibernate(&err); -+ else if (handler_context->hibernate_systemd) -+ dbus_systemd_Hibernate(&err); -+ -+ if (err) -+ { -+ gtk_label_set_text(GTK_LABEL(handler_context->error_label), err->message); -+ g_error_free (err); -+ } -+ else -+ { -+ gtk_main_quit(); -+ } - } - - /* Handler for "clicked" signal on Switch User button. */ - static void switch_user_clicked(GtkButton * button, HandlerContext * handler_context) - { -+ GError *err = NULL; - gtk_label_set_text(GTK_LABEL(handler_context->error_label), NULL); - - lock_screen(); -@@ -310,11 +323,19 @@ - else if (handler_context->switch_user_KDM) - g_spawn_command_line_sync("kdmctl reserve", NULL, NULL, NULL, NULL); - else if (handler_context->switch_user_LIGHTDM) -- dbus_Lightdm_SwitchToGreeter(); -+ dbus_Lightdm_SwitchToGreeter(&err); - else if(handler_context->switch_user_LXDM) - g_spawn_command_line_sync("lxdm-binary -c USER_SWITCH", NULL, NULL, NULL, NULL); - -- gtk_main_quit(); -+ if (err) -+ { -+ gtk_label_set_text(GTK_LABEL(handler_context->error_label), err->message); -+ g_error_free (err); -+ } -+ else -+ { -+ gtk_main_quit(); -+ } - } - - /* Handler for "clicked" signal on Lock button. */ -@@ -449,26 +470,26 @@ - const char * p = g_getenv("_LXSESSION_PID"); - if (p != NULL) handler_context.lxsession_pid = atoi(p); - -- /* Initialize capabilities of the logind mechanism. */ -- if (dbus_logind_CanPowerOff()) -+ /* Initialize capabilities of the systemd mechanism. */ -+ if (dbus_systemd_CanPowerOff()) - { - handler_context.shutdown_available = TRUE; -- handler_context.shutdown_logind = TRUE; -+ handler_context.shutdown_systemd = TRUE; - } -- if (dbus_logind_CanReboot()) -+ if (dbus_systemd_CanReboot()) - { - handler_context.reboot_available = TRUE; -- handler_context.reboot_logind = TRUE; -+ handler_context.reboot_systemd = TRUE; - } -- if (dbus_logind_CanSuspend()) -+ if (dbus_systemd_CanSuspend()) - { - handler_context.suspend_available = TRUE; -- handler_context.suspend_logind = TRUE; -+ handler_context.suspend_systemd = TRUE; - } -- if (dbus_logind_CanHibernate()) -+ if (dbus_systemd_CanHibernate()) - { - handler_context.hibernate_available = TRUE; -- handler_context.hibernate_logind = TRUE; -+ handler_context.hibernate_systemd = TRUE; - } - - /* Initialize capabilities of the ConsoleKit mechanism. */ -@@ -495,28 +516,6 @@ - handler_context.hibernate_UPower = TRUE; - } - -- /* Initialize capabilities of the HAL mechanism. */ -- if (!handler_context.shutdown_available && dbus_HAL_CanShutdown()) -- { -- handler_context.shutdown_available = TRUE; -- handler_context.shutdown_HAL = TRUE; -- } -- if (!handler_context.reboot_available && dbus_HAL_CanReboot()) -- { -- handler_context.reboot_available = TRUE; -- handler_context.reboot_HAL = TRUE; -- } -- if (!handler_context.suspend_available && dbus_HAL_CanSuspend()) -- { -- handler_context.suspend_available = TRUE; -- handler_context.suspend_HAL = TRUE; -- } -- if (!handler_context.hibernate_available && dbus_HAL_CanHibernate()) -- { -- handler_context.hibernate_available = TRUE; -- handler_context.hibernate_HAL = TRUE; -- } -- - /* If we are under GDM, its "Switch User" is available. */ - if (verify_running("gdm", "gdmflexiserver")) - { -@@ -664,20 +663,23 @@ - if (session_name == NULL) - session_name = "LXDE"; - -- const gchar *command_line = "lsb_release -r -s"; - gchar *output = NULL; -- GError *error; - -- if (!g_spawn_command_line_sync( command_line, -- &output, -- NULL, -- NULL, -- &error)) -+ if (g_find_program_in_path("lsb_release")) - { -+ const gchar *command_line = "lsb_release -r -s"; -+ GError *error; -+ if (!g_spawn_command_line_sync( command_line, -+ &output, -+ NULL, -+ NULL, -+ &error)) -+ { - -- fprintf (stderr, "Error: %s\n", error->message); -- g_error_free (error); -+ fprintf (stderr, "Error: %s\n", error->message); -+ g_error_free (error); - -+ } - } - - if (output == NULL) -diff -Naur lxsession-0.4.9.2/lxsession-logout.orig/lxsession-logout-dbus-interface.c lxsession-0.4.9.2/lxsession-logout/lxsession-logout-dbus-interface.c ---- lxsession-0.4.9.2/lxsession-logout.orig/lxsession-logout-dbus-interface.c 1970-01-01 01:00:00.000000000 +0100 -+++ lxsession-0.4.9.2/lxsession-logout/lxsession-logout-dbus-interface.c 2014-01-03 15:42:59.596454865 +0100 -@@ -0,0 +1,368 @@ -+/* Taken from LightDM and modified. -+ * Copyright (C) 2012 Fabrice THIROUX <fabrice.thiroux@free.fr>. -+ * -+ **** License from former file (power.c) **** -+ * -+ * Copyright (C) 2010-2011 Robert Ancell. -+ * Author: Robert Ancell <robert.ancell@canonical.com> -+ * -+ * This library is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License as published by the Free -+ * Software Foundation; either version 3 of the License, or (at your option) any -+ * later version. See http://www.gnu.org/copyleft/lgpl.html the full text of the -+ * license. -+ */ -+#include <config.h> -+#include <glib.h> -+#include <string.h> -+#include <dbus/dbus.h> -+#include <gio/gio.h> -+ -+/*** Mechanism independent ***/ -+ -+static GDBusProxy *upower_proxy = NULL; -+static GDBusProxy *ck_proxy = NULL; -+static GDBusProxy *systemd_proxy = NULL; -+static GDBusProxy *lightdm_proxy = NULL; -+static GDBusProxy *lxde_proxy = NULL; -+ -+ -+/*** UPower mechanism ***/ -+ -+static gboolean -+upower_call_function (const gchar *function, gboolean default_result, GError **error) -+{ -+ GVariant *result; -+ gboolean function_result = FALSE; -+ -+ if (!upower_proxy) -+ { -+ upower_proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM, -+ G_DBUS_PROXY_FLAGS_NONE, -+ NULL, -+ "org.freedesktop.UPower", -+ "/org/freedesktop/UPower", -+ "org.freedesktop.UPower", -+ NULL, -+ error); -+ if (!upower_proxy) -+ return FALSE; -+ } -+ -+ result = g_dbus_proxy_call_sync (upower_proxy, -+ function, -+ NULL, -+ G_DBUS_CALL_FLAGS_NONE, -+ -1, -+ NULL, -+ error); -+ if (!result) -+ return default_result; -+ -+ if (g_variant_is_of_type (result, G_VARIANT_TYPE ("(b)"))) -+ g_variant_get (result, "(b)", &function_result); -+ -+ g_variant_unref (result); -+ return function_result; -+} -+ -+gboolean -+dbus_UPower_CanSuspend (void) -+{ -+ return upower_call_function ("SuspendAllowed", FALSE, NULL); -+} -+ -+gboolean -+dbus_UPower_Suspend (GError **error) -+{ -+ return upower_call_function ("Suspend", TRUE, error); -+} -+ -+gboolean -+dbus_UPower_CanHibernate (void) -+{ -+ return upower_call_function ("HibernateAllowed", FALSE, NULL); -+} -+ -+gboolean -+dbus_UPower_Hibernate (GError **error) -+{ -+ return upower_call_function ("Hibernate", TRUE, error); -+} -+ -+/*** ConsoleKit mechanism ***/ -+ -+static gboolean -+ck_call_function (const gchar *function, gboolean default_result, GError **error) -+{ -+ GVariant *result; -+ gboolean function_result = FALSE; -+ -+ if (!ck_proxy) -+ { -+ ck_proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM, -+ G_DBUS_PROXY_FLAGS_NONE, -+ NULL, -+ "org.freedesktop.ConsoleKit", -+ "/org/freedesktop/ConsoleKit/Manager", -+ "org.freedesktop.ConsoleKit.Manager", -+ NULL, -+ error); -+ if (!ck_proxy) -+ return FALSE; -+ } -+ -+ result = g_dbus_proxy_call_sync (ck_proxy, -+ function, -+ NULL, -+ G_DBUS_CALL_FLAGS_NONE, -+ -1, -+ NULL, -+ error); -+ if (!result) -+ return default_result; -+ -+ if (g_variant_is_of_type (result, G_VARIANT_TYPE ("(b)"))) -+ g_variant_get (result, "(b)", &function_result); -+ -+ g_variant_unref (result); -+ return function_result; -+} -+ -+gboolean -+dbus_ConsoleKit_CanRestart (void) -+{ -+ return ck_call_function ("CanRestart", FALSE, NULL); -+} -+ -+gboolean -+dbus_ConsoleKit_Restart (GError **error) -+{ -+ return ck_call_function ("Restart", TRUE, error); -+} -+ -+gboolean -+dbus_ConsoleKit_CanStop (void) -+{ -+ return ck_call_function ("CanStop", FALSE, NULL); -+} -+ -+gboolean -+dbus_ConsoleKit_Stop (GError **error) -+{ -+ return ck_call_function ("Stop", TRUE, error); -+} -+ -+/*** Systemd mechanism ***/ -+ -+static gboolean -+systemd_query (const gchar *function, gboolean default_result, GError **error) -+{ -+ GVariant *result; -+ gboolean function_result = FALSE; -+ const gchar *str; -+ -+ if (!systemd_proxy) -+ { -+ systemd_proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM, -+ G_DBUS_PROXY_FLAGS_NONE, -+ NULL, -+ "org.freedesktop.login1", -+ "/org/freedesktop/login1", -+ "org.freedesktop.login1.Manager", -+ NULL, -+ error); -+ if (!systemd_proxy) -+ return FALSE; -+ } -+ -+ result = g_dbus_proxy_call_sync (systemd_proxy, -+ function, -+ NULL, -+ G_DBUS_CALL_FLAGS_NONE, -+ -1, -+ NULL, -+ error); -+ if (!result) -+ return default_result; -+ -+ if (g_variant_is_of_type (result, G_VARIANT_TYPE ("(s)"))) -+ { -+ g_variant_get (result, "(s)", &str); -+ if (g_strcmp0 (str, "yes") || g_strcmp0 (str, "challenge")) -+ function_result = TRUE; -+ else -+ function_result = default_result; -+ } -+ -+ g_variant_unref (result); -+ return function_result; -+} -+ -+static void -+systemd_call_function (const gchar *function, gboolean value, GError **error) -+{ -+ GVariant *result; -+ -+ if (!systemd_proxy) -+ { -+ systemd_proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM, -+ G_DBUS_PROXY_FLAGS_NONE, -+ NULL, -+ "org.freedesktop.login1", -+ "/org/freedesktop/login1", -+ "org.freedesktop.login1.Manager", -+ NULL, -+ error); -+ if (!systemd_proxy) -+ return; -+ } -+ -+ result = g_dbus_proxy_call_sync (systemd_proxy, -+ function, -+ g_variant_new ("(b)", value), -+ G_DBUS_CALL_FLAGS_NONE, -+ -1, -+ NULL, -+ error); -+ g_variant_unref (result); -+ return; -+} -+ -+gboolean -+dbus_systemd_CanPowerOff (void) -+{ -+ return systemd_query ("CanPowerOff", FALSE, NULL); -+} -+ -+void -+dbus_systemd_PowerOff (GError **error) -+{ -+ systemd_call_function ("PowerOff", TRUE, error); -+} -+ -+gboolean -+dbus_systemd_CanReboot (void) -+{ -+ return systemd_query ("CanReboot", FALSE, NULL); -+} -+ -+void -+dbus_systemd_Reboot (GError **error) -+{ -+ systemd_call_function ("Reboot", TRUE, error); -+} -+ -+gboolean -+dbus_systemd_CanSuspend (void) -+{ -+ return systemd_query ("CanSuspend", FALSE, NULL); -+} -+ -+void -+dbus_systemd_Suspend (GError **error) -+{ -+ systemd_call_function ("Suspend", TRUE, error); -+} -+ -+gboolean -+dbus_systemd_CanHibernate (void) -+{ -+ return systemd_query ("CanHibernate", FALSE, NULL); -+} -+ -+void -+dbus_systemd_Hibernate (GError **error) -+{ -+ systemd_call_function ("Hibernate", TRUE, error); -+} -+ -+/*** Lightdm mechanism ***/ -+ -+static gboolean -+lightdm_call_function (const gchar *function, gboolean default_result, GError **error) -+{ -+ GVariant *result; -+ gboolean function_result = FALSE; -+ -+ if (!lightdm_proxy) -+ { -+ lightdm_proxy = g_dbus_proxy_new_for_bus_sync ( G_BUS_TYPE_SYSTEM, -+ G_DBUS_PROXY_FLAGS_NONE, -+ NULL, -+ "org.freedesktop.DisplayManager", -+ g_getenv ("XDG_SEAT_PATH"), -+ "org.freedesktop.DisplayManager.Seat", -+ NULL, -+ error); -+ if (!lightdm_proxy) -+ return FALSE; -+ } -+ -+ result = g_dbus_proxy_call_sync (lightdm_proxy, -+ function, -+ NULL, -+ G_DBUS_CALL_FLAGS_NONE, -+ -1, -+ NULL, -+ error); -+ if (!result) -+ return default_result; -+ -+ if (g_variant_is_of_type (result, G_VARIANT_TYPE ("(b)"))) -+ g_variant_get (result, "(b)", &function_result); -+ -+ g_variant_unref (result); -+ return function_result; -+} -+ -+gboolean -+dbus_Lightdm_SwitchToGreeter (GError **error) -+{ -+ return lightdm_call_function ("SwitchToGreeter", TRUE, error); -+} -+ -+/*** LXDE mechanism ***/ -+ -+static gboolean -+lxde_call_function (const gchar *function, gboolean default_result, GError **error) -+{ -+ GVariant *result; -+ gboolean function_result = FALSE; -+ -+ if (!lxde_proxy) -+ { -+ lxde_proxy = g_dbus_proxy_new_for_bus_sync ( G_BUS_TYPE_SYSTEM, -+ G_DBUS_PROXY_FLAGS_NONE, -+ NULL, -+ "org.lxde.SessionManager", -+ "/org/lxde/SessionManager", -+ "org.lxde.SessionManager", -+ NULL, -+ error); -+ if (!lxde_proxy) -+ return FALSE; -+ } -+ -+ result = g_dbus_proxy_call_sync (lxde_proxy, -+ function, -+ NULL, -+ G_DBUS_CALL_FLAGS_NONE, -+ -1, -+ NULL, -+ error); -+ if (!result) -+ return default_result; -+ -+ if (g_variant_is_of_type (result, G_VARIANT_TYPE ("(b)"))) -+ g_variant_get (result, "(b)", &function_result); -+ -+ g_variant_unref (result); -+ return function_result; -+} -+ -+gboolean -+dbus_LXDE_Logout (GError **error) -+{ -+ return lxde_call_function ("Restart", TRUE, error); -+} -diff -Naur lxsession-0.4.9.2/lxsession-logout.orig/lxsession-logout-dbus-interface.h lxsession-0.4.9.2/lxsession-logout/lxsession-logout-dbus-interface.h ---- lxsession-0.4.9.2/lxsession-logout.orig/lxsession-logout-dbus-interface.h 1970-01-01 01:00:00.000000000 +0100 -+++ lxsession-0.4.9.2/lxsession-logout/lxsession-logout-dbus-interface.h 2014-01-03 15:42:59.596454865 +0100 -@@ -0,0 +1,52 @@ -+/** -+ * Copyright (c) 2010 LxDE Developers, see the file AUTHORS for details. -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with this program; if not, write to the Free Software Foundation, -+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -+ */ -+ -+#ifndef _DBUS_INTERFACE_H -+#define _DBUS_INTERFACE_H -+ -+#include <glib.h> -+ -+/* Interface to ConsoleKit for shutdown and reboot. */ -+extern gboolean dbus_ConsoleKit_CanStop(void); -+extern gboolean dbus_ConsoleKit_CanRestart(void); -+extern gboolean dbus_ConsoleKit_Stop(GError **); -+extern gboolean dbus_ConsoleKit_Restart(GError **); -+ -+/* Interface to UPower for suspend and hibernate. */ -+extern gboolean dbus_UPower_CanSuspend(void); -+extern gboolean dbus_UPower_CanHibernate(void); -+extern gboolean dbus_UPower_Suspend(GError **); -+extern gboolean dbus_UPower_Hibernate(GError **); -+ -+/* Interface to systemd for suspend, hibernate, shutdown and reboot. */ -+extern gboolean dbus_systemd_CanPowerOff(void); -+extern gboolean dbus_systemd_CanReboot(void); -+extern gboolean dbus_systemd_CanSuspend(void); -+extern gboolean dbus_systemd_CanHibernate(void); -+extern void dbus_systemd_PowerOff(GError **); -+extern void dbus_systemd_Reboot(GError **); -+extern void dbus_systemd_Suspend(GError **); -+extern void dbus_systemd_Hibernate(GError **); -+ -+/* Interface to lightdm for switch user. */ -+extern gboolean dbus_Lightdm_SwitchToGreeter (GError **error); -+ -+/* Interface to lxde for logout. */ -+extern gboolean dbus_LXDE_Logout (GError **error); -+ -+#endif -diff -Naur lxsession-0.4.9.2/lxsession-logout.orig/Makefile.am lxsession-0.4.9.2/lxsession-logout/Makefile.am ---- lxsession-0.4.9.2/lxsession-logout.orig/Makefile.am 2012-10-25 20:20:04.000000000 +0200 -+++ lxsession-0.4.9.2/lxsession-logout/Makefile.am 2014-01-03 15:42:59.596454865 +0100 -@@ -8,6 +8,6 @@ - lxsession_logout_LDADD = $(GTK_LIBS) $(SM_LIBS) $(DBUS_LIBS) $(X11_LIBS) - - lxsession_logout_SOURCES= \ -- dbus-interface.c \ -- dbus-interface.h \ -+ lxsession-logout-dbus-interface.c \ -+ lxsession-logout-dbus-interface.h \ - lxsession-logout.c |