1
0
forked from pool/xfce4-session
OBS User unknown 2008-11-20 15:35:05 +00:00 committed by Git OBS Bridge
parent 1a6456ba64
commit 1ea8c3703b
6 changed files with 318 additions and 137 deletions

View File

@ -0,0 +1,11 @@
--- xfce4-autostart-editor/xfae-model.c
+++ xfce4-autostart-editor/xfae-model.c
@@ -490,7 +490,7 @@
xfce_rc_close (rc);
/* check if we should skip the item */
- if (G_UNLIKELY (skip))
+ if (G_UNLIKELY (skip) && item)
{
xfae_item_free (item);
item = NULL;

View File

@ -0,0 +1,90 @@
--- configure
+++ configure
@@ -26560,7 +26560,7 @@
if test x"$xdt_cv_DBUS_check" = x"yes"; then
- if $PKG_CONFIG --exists "dbus-1 >= 0.34" >/dev/null 2>&1; then
+ if $PKG_CONFIG --exists "dbus-glib-1 >= 0.34" >/dev/null 2>&1; then
# minimum supported version of pkg-config
@@ -26644,22 +26644,22 @@
fi
- { $as_echo "$as_me:$LINENO: checking for dbus-1 >= 0.34" >&5
-$as_echo_n "checking for dbus-1 >= 0.34... " >&6; }
- if $PKG_CONFIG "--atleast-version=0.34" "dbus-1" >/dev/null 2>&1; then
- DBUS_VERSION=`$PKG_CONFIG --modversion "dbus-1"`
+ { $as_echo "$as_me:$LINENO: checking for dbus-glib-1 >= 0.34" >&5
+$as_echo_n "checking for dbus-glib-1 >= 0.34... " >&6; }
+ if $PKG_CONFIG "--atleast-version=0.34" "dbus-glib-1" >/dev/null 2>&1; then
+ DBUS_VERSION=`$PKG_CONFIG --modversion "dbus-glib-1"`
{ $as_echo "$as_me:$LINENO: result: $DBUS_VERSION" >&5
$as_echo "$DBUS_VERSION" >&6; }
{ $as_echo "$as_me:$LINENO: checking DBUS_CFLAGS" >&5
$as_echo_n "checking DBUS_CFLAGS... " >&6; }
- DBUS_CFLAGS=`$PKG_CONFIG --cflags "dbus-1"`
+ DBUS_CFLAGS=`$PKG_CONFIG --cflags "dbus-glib-1"`
{ $as_echo "$as_me:$LINENO: result: $DBUS_CFLAGS" >&5
$as_echo "$DBUS_CFLAGS" >&6; }
{ $as_echo "$as_me:$LINENO: checking DBUS_LIBS" >&5
$as_echo_n "checking DBUS_LIBS... " >&6; }
- DBUS_LIBS=`$PKG_CONFIG --libs "dbus-1"`
+ DBUS_LIBS=`$PKG_CONFIG --libs "dbus-glib-1"`
{ $as_echo "$as_me:$LINENO: result: $DBUS_LIBS" >&5
$as_echo "$DBUS_LIBS" >&6; }
@@ -26678,15 +26678,15 @@
DBUS_FOUND="yes"
- elif $PKG_CONFIG --exists "dbus-1" >/dev/null 2>&1; then
- xdt_cv_version=`$PKG_CONFIG --modversion "dbus-1"`
+ elif $PKG_CONFIG --exists "dbus-glib-1" >/dev/null 2>&1; then
+ xdt_cv_version=`$PKG_CONFIG --modversion "dbus-glib-1"`
{ $as_echo "$as_me:$LINENO: result: found, but $xdt_cv_version" >&5
$as_echo "found, but $xdt_cv_version" >&6; }
- echo "*** The required package dbus-1 was found on your system,"
+ echo "*** The required package dbus-glib-1 was found on your system,"
echo "*** but the installed version ($xdt_cv_version) is too old."
- echo "*** Please upgrade dbus-1 to atleast version 0.34, or adjust"
+ echo "*** Please upgrade dbus-glib-1 to atleast version 0.34, or adjust"
echo "*** the PKG_CONFIG_PATH environment variable if you installed"
echo "*** the new version of the package in a nonstandard prefix so"
echo "*** pkg-config is able to find it."
@@ -26697,8 +26697,8 @@
$as_echo "not found" >&6; }
- echo "*** The required package dbus-1 was not found on your system."
- echo "*** Please install dbus-1 (atleast version 0.34) or adjust"
+ echo "*** The required package dbus-glib-1 was not found on your system."
+ echo "*** Please install dbus-glib-1 (atleast version 0.34) or adjust"
echo "*** the PKG_CONFIG_PATH environment variable if you"
echo "*** installed the package in a nonstandard prefix so that"
echo "*** pkg-config is able to find it."
@@ -26707,14 +26707,14 @@
fi
else
- { $as_echo "$as_me:$LINENO: checking for optional package dbus-1 >= 0.34" >&5
-$as_echo_n "checking for optional package dbus-1 >= 0.34... " >&6; }
+ { $as_echo "$as_me:$LINENO: checking for optional package dbus-glib-1 >= 0.34" >&5
+$as_echo_n "checking for optional package dbus-glib-1 >= 0.34... " >&6; }
{ $as_echo "$as_me:$LINENO: result: not found" >&5
$as_echo "not found" >&6; }
fi
else
- { $as_echo "$as_me:$LINENO: checking for optional package dbus-1" >&5
-$as_echo_n "checking for optional package dbus-1... " >&6; }
+ { $as_echo "$as_me:$LINENO: checking for optional package dbus-glib-1" >&5
+$as_echo_n "checking for optional package dbus-glib-1... " >&6; }
{ $as_echo "$as_me:$LINENO: result: disabled" >&5
$as_echo "disabled" >&6; }
fi

View File

@ -1,7 +1,5 @@
Index: xfce4-session-4.3.99.2/settings/session/session.c
===================================================================
--- xfce4-session-4.3.99.2.orig/settings/session/session.c
+++ xfce4-session-4.3.99.2/settings/session/session.c
--- settings/session/session.c
+++ settings/session/session.c
@@ -51,6 +51,8 @@ static GtkWidget *dialog = NULL;
static GtkWidget *general_chooser;
static GtkWidget *general_autosave;
@ -20,7 +18,7 @@ Index: xfce4-session-4.3.99.2/settings/session/session.c
}
if (G_LIKELY (kiosk_can_security))
{
@@ -124,10 +128,15 @@ general_create (XfceRc *rc)
@@ -124,10 +128,14 @@ general_create (XfceRc *rc)
gboolean autosave;
gboolean prompt;
gboolean chooser;
@ -32,14 +30,14 @@ Index: xfce4-session-4.3.99.2/settings/session/session.c
prompt = xfce_rc_read_bool_entry (rc, "PromptOnLogout", TRUE);
+ hibernate = xfce_rc_read_bool_entry (rc, "HibernateButton", TRUE);
+ suspend = xfce_rc_read_bool_entry (rc, "SuspendButton", TRUE);
+
xfce_rc_set_group (rc, "Chooser");
chooser = xfce_rc_read_bool_entry (rc, "AlwaysDisplay", FALSE);
@@ -182,6 +191,29 @@ general_create (XfceRc *rc)
@@ -181,6 +189,29 @@ general_create (XfceRc *rc)
"depends on whether you enabled the automatic "
"saving of sessions on logout or not."),
NULL);
+
+ general_hibernate_button = gtk_check_button_new_with_label (_("Show hibernate button"));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (general_hibernate_button), hibernate);
+ g_signal_connect (G_OBJECT (general_hibernate_button), "toggled",
@ -62,14 +60,11 @@ Index: xfce4-session-4.3.99.2/settings/session/session.c
+ "RAM and resumes correctly."),
+ NULL);
+
+
return page;
}
Index: xfce4-session-4.3.99.2/xfce4-session/main.c
===================================================================
--- xfce4-session-4.3.99.2.orig/xfce4-session/main.c
+++ xfce4-session-4.3.99.2/xfce4-session/main.c
--- xfce4-session/main.c
+++ xfce4-session/main.c
@@ -61,6 +61,11 @@
#include <xfce4-session/xfsm-manager.h>
#include <xfce4-session/xfsm-startup.h>
@ -98,10 +93,8 @@ Index: xfce4-session-4.3.99.2/xfce4-session/main.c
- return xfsm_shutdown (shutdown_type);
+ return xfsm_shutdown ();
}
Index: xfce4-session-4.3.99.2/xfce4-session/shutdown.c
===================================================================
--- xfce4-session-4.3.99.2.orig/xfce4-session/shutdown.c
+++ xfce4-session-4.3.99.2/xfce4-session/shutdown.c
--- xfce4-session/shutdown.c
+++ xfce4-session/shutdown.c
@@ -110,34 +110,36 @@ entry_activate_cb (GtkWidget *entry, Gtk
gtk_dialog_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
}
@ -130,6 +123,9 @@ Index: xfce4-session-4.3.99.2/xfce4-session/shutdown.c
+struct LogoutButton
{
- *shutdownType = SHUTDOWN_HALT;
-
- gtk_dialog_response (GTK_DIALOG (shutdown_dialog), GTK_RESPONSE_OK);
-}
+ gchar * label;
+ gchar * icon;
+ gint cmd;
@ -138,6 +134,7 @@ Index: xfce4-session-4.3.99.2/xfce4-session/shutdown.c
+};
+
+struct LogoutButton logout_buttons [] = {
+ { N_("Switch user"), "xfsm-switch", XFSM_SWITCH, TRUE },
+ { N_("Log out"), "xfsm-logout", XFSM_LOGOUT, TRUE },
+ { N_("Restart"), "xfsm-reboot", XFSM_REBOOT, TRUE },
+ { N_("Shut down"), "xfsm-shutdown", XFSM_SHUTDOWN, TRUE },
@ -145,9 +142,6 @@ Index: xfce4-session-4.3.99.2/xfce4-session/shutdown.c
+ { N_("Hibernate"), "xfsm-hibernate", XFSM_HIBERNATE, FALSE},
+};
- gtk_dialog_response (GTK_DIALOG (shutdown_dialog), GTK_RESPONSE_OK);
-}
-/*
- */
gboolean
@ -156,7 +150,17 @@ Index: xfce4-session-4.3.99.2/xfce4-session/shutdown.c
{
gboolean accessibility;
XfsmFadeout *fadeout = NULL;
@@ -154,8 +156,6 @@ shutdownDialog(gint *shutdownType, gbool
@@ -145,7 +147,9 @@ shutdownDialog(gint *shutdownType, gbool
GtkWidget *dialog;
GtkWidget *label;
GtkWidget *dbox;
+ GtkWidget *rbox;
GtkWidget *hbox;
+ GtkWidget *hbox2;
GtkWidget *vbox;
GtkWidget *vbox2;
GtkWidget *image;
@@ -154,14 +158,14 @@ shutdownDialog(gint *shutdownType, gbool
GtkWidget *entry;
GtkWidget *hidden;
GtkWidget *logout_button;
@ -164,8 +168,7 @@ Index: xfce4-session-4.3.99.2/xfce4-session/shutdown.c
- GtkWidget *halt_button;
GtkWidget *cancel_button;
GtkWidget *ok_button;
GtkWidget *header;
@@ -163,6 +163,8 @@ shutdownDialog(gint *shutdownType, gbool
GdkPixbuf *icon;
gboolean saveonexit;
gboolean autosave;
gboolean prompt;
@ -174,18 +177,18 @@ Index: xfce4-session-4.3.99.2/xfce4-session/shutdown.c
gint monitor;
gint result;
XfceKiosk *kiosk;
@@ -174,9 +176,9 @@ shutdownDialog(gint *shutdownType, gbool
@@ -173,9 +177,8 @@ shutdownDialog(gint *shutdownType, gbool
GdkPixmap *screenshot_pm = NULL;
GdkGC *screenshot_gc;
#endif
-
+ gint i;
g_return_val_if_fail(saveSession != NULL, FALSE);
- g_return_val_if_fail(shutdownType != NULL, FALSE);
/* destroy any previously running shutdown helper first */
if (shutdown_helper != NULL)
@@ -196,13 +198,15 @@ shutdownDialog(gint *shutdownType, gbool
@@ -195,13 +198,15 @@ shutdownDialog(gint *shutdownType, gbool
saveonexit = xfce_rc_read_bool_entry (rc, "SaveOnExit", TRUE);
autosave = xfce_rc_read_bool_entry (rc, "AutoSave", FALSE);
prompt = xfce_rc_read_bool_entry (rc, "PromptOnLogout", TRUE);
@ -202,12 +205,15 @@ Index: xfce4-session-4.3.99.2/xfce4-session/shutdown.c
*saveSession = autosave;
return TRUE;
@@ -318,76 +322,39 @@ shutdownDialog(gint *shutdownType, gbool
@@ -311,76 +316,43 @@ shutdownDialog(gint *shutdownType, gbool
hbox = gtk_hbox_new (TRUE, BORDER);
gtk_widget_show (hbox);
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
+ logout_buttons[3].present = have_suspend;
+ logout_buttons[4].present = have_hibernate;
+ hbox2 = gtk_hbox_new (TRUE, BORDER);
+ gtk_widget_show (hbox2);
+ gtk_box_pack_start (GTK_BOX (vbox), hbox2, FALSE, FALSE, 0);
+ logout_buttons[4].present = have_suspend;
+ logout_buttons[5].present = have_hibernate;
- /* logout */
- logout_button = gtk_button_new ();
@ -278,16 +284,17 @@ Index: xfce4-session-4.3.99.2/xfce4-session/shutdown.c
- gtk_widget_show (label);
- gtk_box_pack_start (GTK_BOX (vbox2), label, FALSE, FALSE, 0);
-
+ for (i = 0; i < G_N_ELEMENTS (logout_buttons); i++) {
+
+ for (i = 0; i < G_N_ELEMENTS (logout_buttons); i++) {
+
+ if (logout_buttons[i].present == FALSE)
+ continue;
+
+ continue;
+
+ logout_button = gtk_button_new ();
+ gtk_widget_show (logout_button);
+ gtk_box_pack_start (GTK_BOX (hbox), logout_button, TRUE, TRUE, 0);
+ rbox = i > G_N_ELEMENTS (logout_buttons)/2 - 1 ? hbox2 : hbox;
+ gtk_box_pack_start (GTK_BOX (rbox), logout_button, TRUE, TRUE, 0);
+
+ g_signal_connect (logout_button, "clicked",
+ g_signal_connect (logout_button, "clicked",
+ G_CALLBACK (logout_dialog_button_clicked), &logout_buttons[i].cmd);
+
+ vbox2 = gtk_vbox_new (FALSE, BORDER);
@ -301,38 +308,40 @@ Index: xfce4-session-4.3.99.2/xfce4-session/shutdown.c
+ gtk_box_pack_start (GTK_BOX (vbox2), image, FALSE, FALSE, 0);
+ g_object_unref (icon);
+
+ label = gtk_label_new (logout_buttons[i].label);
+ label = gtk_label_new (_(logout_buttons[i].label));
+ gtk_widget_show (label);
+ gtk_box_pack_start (GTK_BOX (vbox2), label, FALSE, FALSE, 0);
+
+ logout_buttons[i].button = logout_button;
+ }
+
+
/* save session */
if (!autosave)
{
@@ -413,8 +380,9 @@ shutdownDialog(gint *shutdownType, gbool
@@ -406,8 +378,9 @@ shutdownDialog(gint *shutdownType, gbool
if (!kiosk_can_shutdown ||
(shutdown_helper = xfsm_shutdown_helper_spawn ()) == NULL)
{
- gtk_widget_set_sensitive (reboot_button, FALSE);
- gtk_widget_set_sensitive (halt_button, FALSE);
+ for (i = 1; i < G_N_ELEMENTS (logout_buttons); i++) {
+ for (i = 2; i < G_N_ELEMENTS (logout_buttons); i++) {
+ gtk_widget_set_sensitive (logout_buttons[i].button, FALSE);
+ }
}
/* save portion of the root window covered by the dialog */
@@ -444,7 +412,7 @@ shutdownDialog(gint *shutdownType, gbool
@@ -437,7 +410,9 @@ shutdownDialog(gint *shutdownType, gbool
gtk_widget_hide (dialog);
/* ask password */
- if (result == GTK_RESPONSE_OK && *shutdownType != SHUTDOWN_LOGOUT
+ if (result == GTK_RESPONSE_OK && shutdownType != XFSM_LOGOUT
+ if (result == GTK_RESPONSE_OK
+ && shutdownType != XFSM_LOGOUT
+ && shutdownType != XFSM_SWITCH
&& xfsm_shutdown_helper_need_password (shutdown_helper))
{
gtk_widget_show (ok_button);
@@ -540,6 +508,16 @@ shutdownDialog(gint *shutdownType, gbool
@@ -533,6 +508,21 @@ shutdownDialog(gint *shutdownType, gbool
gdk_flush ();
}
@ -345,11 +354,16 @@ Index: xfce4-session-4.3.99.2/xfce4-session/shutdown.c
+ xfsm_shutdown_helper_send_command (shutdown_helper, shutdownType);
+ return FALSE;
+ }
+
+ if (result == GTK_RESPONSE_OK && shutdownType == XFSM_SWITCH) {
+ g_spawn_command_line_sync ("gdmflexiserver --startnew", NULL, NULL, NULL, NULL);
+ return FALSE;
+ }
+
/* process all pending events first */
while (gtk_events_pending ())
g_main_context_iteration (NULL, FALSE);
@@ -578,7 +556,7 @@ shutdownDialog(gint *shutdownType, gbool
@@ -571,7 +561,7 @@ shutdownDialog(gint *shutdownType, gbool
/*
*/
gint
@ -358,7 +372,7 @@ Index: xfce4-session-4.3.99.2/xfce4-session/shutdown.c
{
gboolean result;
@@ -596,7 +574,7 @@ xfsm_shutdown(gint type)
@@ -589,7 +579,7 @@ xfsm_shutdown(gint type)
sync ();
#endif
@ -367,7 +381,7 @@ Index: xfce4-session-4.3.99.2/xfce4-session/shutdown.c
return EXIT_SUCCESS;
if (shutdown_helper == NULL)
@@ -605,16 +583,7 @@ xfsm_shutdown(gint type)
@@ -598,16 +588,7 @@ xfsm_shutdown(gint type)
return EXIT_FAILURE;
}
@ -385,10 +399,8 @@ Index: xfce4-session-4.3.99.2/xfce4-session/shutdown.c
xfsm_shutdown_helper_destroy (shutdown_helper);
shutdown_helper = NULL;
Index: xfce4-session-4.3.99.2/xfce4-session/shutdown.h
===================================================================
--- xfce4-session-4.3.99.2.orig/xfce4-session/shutdown.h
+++ xfce4-session-4.3.99.2/xfce4-session/shutdown.h
--- xfce4-session/shutdown.h
+++ xfce4-session/shutdown.h
@@ -24,13 +24,8 @@
#include <glib.h>
@ -405,10 +417,8 @@ Index: xfce4-session-4.3.99.2/xfce4-session/shutdown.h
+extern gint xfsm_shutdown(void);
#endif /* !__XFSM_SHUTDOWN_H__ */
Index: xfce4-session-4.3.99.2/xfce4-session/xfsm-global.c
===================================================================
--- xfce4-session-4.3.99.2.orig/xfce4-session/xfsm-global.c
+++ xfce4-session-4.3.99.2/xfce4-session/xfsm-global.c
--- xfce4-session/xfsm-global.c
+++ xfce4-session/xfsm-global.c
@@ -46,7 +46,6 @@ gchar *session_name = NULL;
gchar *session_file = NULL;
GList *failsafe_clients = NULL;
@ -417,10 +427,8 @@ Index: xfce4-session-4.3.99.2/xfce4-session/xfsm-global.c
XfsmSplashScreen *splash_screen = NULL;
void
Index: xfce4-session-4.3.99.2/xfce4-session/xfsm-global.h
===================================================================
--- xfce4-session-4.3.99.2.orig/xfce4-session/xfsm-global.h
+++ xfce4-session-4.3.99.2/xfce4-session/xfsm-global.h
--- xfce4-session/xfsm-global.h
+++ xfce4-session/xfsm-global.h
@@ -47,7 +47,6 @@ extern gchar *session_name;
extern gchar *session_file;
extern GList *failsafe_clients;
@ -429,11 +437,9 @@ Index: xfce4-session-4.3.99.2/xfce4-session/xfsm-global.h
extern XfsmSplashScreen *splash_screen;
Index: xfce4-session-4.3.99.2/xfce4-session/xfsm-manager.c
===================================================================
--- xfce4-session-4.3.99.2.orig/xfce4-session/xfsm-manager.c
+++ xfce4-session-4.3.99.2/xfce4-session/xfsm-manager.c
@@ -799,7 +799,7 @@ xfsm_manager_save_yourself (XfsmClient *
--- xfce4-session/xfsm-manager.c
+++ xfce4-session/xfsm-manager.c
@@ -801,7 +801,7 @@ xfsm_manager_save_yourself (XfsmClient *
}
else
{
@ -442,17 +448,27 @@ Index: xfce4-session-4.3.99.2/xfce4-session/xfsm-manager.c
return;
if (!shutdown || shutdown_save)
Index: xfce4-session-4.3.99.2/xfce4-session/xfsm-shutdown-helper.c
===================================================================
--- xfce4-session-4.3.99.2.orig/xfce4-session/xfsm-shutdown-helper.c
+++ xfce4-session-4.3.99.2/xfce4-session/xfsm-shutdown-helper.c
@@ -138,7 +138,17 @@ xfsm_shutdown_helper_hal_check (XfsmShut
return FALSE;
}
--- xfce4-session/xfsm-shutdown-helper.c
+++ xfce4-session/xfsm-shutdown-helper.c
@@ -55,6 +55,12 @@
#ifdef HAVE_DBUS
#include <dbus/dbus.h>
+#define HAL_DBUS_SERVICE "org.freedesktop.Hal"
+#define HAL_ROOT_COMPUTER "/org/freedesktop/Hal/devices/computer"
+#define HAL_DBUS_INTERFACE_DEVICE "org.freedesktop.Hal.Device"
+#define HAL_DBUS_INTERFACE_POWER "org.freedesktop.Hal.Device.SystemPowerManagement"
+#define HAL_PM_CAN_SUSPEND "power_management.can_suspend_to_ram"
+#define HAL_PM_CAN_HIBERNATE "power_management.can_suspend_to_disk"
#endif
#include <libxfce4util/libxfce4util.h>
@@ -74,6 +80,17 @@ struct _XfsmShutdownHelper
};
-
+static struct
+{
+{
+ XfsmShutdownCommand command;
+ gchar * name;
+} xfsm2hal[] =
@ -464,72 +480,111 @@ Index: xfce4-session-4.3.99.2/xfce4-session/xfsm-shutdown-helper.c
+};
static gboolean
xfsm_shutdown_helper_hal_send (XfsmShutdownHelper *helper,
@@ -149,6 +159,8 @@ xfsm_shutdown_helper_hal_send (XfsmShutd
DBusMessage *message;
DBusMessage *result;
DBusError error;
+ gchar *methodname;
+ int i;
/* initialize the error */
dbus_error_init (&error);
@@ -163,10 +175,41 @@ xfsm_shutdown_helper_hal_send (XfsmShutd
}
/* send the appropriate message to HAL, telling it to shutdown or reboot the system */
xfsm_shutdown_helper_hal_check (XfsmShutdownHelper *helper)
@@ -100,9 +117,9 @@ xfsm_shutdown_helper_hal_check (XfsmShut
* use the org.freedesktop.Hal.Device.SystemPowerManagement
* interface without shutting down/rebooting now.
*/
- message = dbus_message_new_method_call ("org.freedesktop.Hal",
- "/org/freedesktop/Hal/devices/computer",
- "org.freedesktop.Hal.Device.SystemPowerManagement",
+ message = dbus_message_new_method_call (HAL_DBUS_SERVICE,
+ HAL_ROOT_COMPUTER,
+ HAL_DBUS_INTERFACE_POWER,
"ThisMethodMustNotExistInHal");
result = dbus_connection_send_with_reply_and_block (connection, message, 2000, &error);
dbus_message_unref (message);
@@ -145,42 +162,45 @@ xfsm_shutdown_helper_hal_send (XfsmShutd
XfsmShutdownCommand command)
{
#ifdef HAVE_DBUS
- DBusConnection *connection;
- DBusMessage *message;
- DBusMessage *result;
- DBusError error;
-
- /* initialize the error */
- dbus_error_init (&error);
-
- /* connect to the system message bus */
- connection = dbus_bus_get (DBUS_BUS_SYSTEM, &error);
- if (G_UNLIKELY (connection == NULL))
- {
- g_warning (G_STRLOC ": Failed to connect to the system message bus: %s", error.message);
- dbus_error_free (&error);
- return FALSE;
- }
-
- /* send the appropriate message to HAL, telling it to shutdown or reboot the system */
- message = dbus_message_new_method_call ("org.freedesktop.Hal",
- "/org/freedesktop/Hal/devices/computer",
- "org.freedesktop.Hal.Device.SystemPowerManagement",
- (command == XFSM_SHUTDOWN_REBOOT) ? "Reboot" : "Shutdown");
+ switch (command)
+ {
+ case XFSM_REBOOT:
+ message = dbus_message_new_method_call ("org.freedesktop.Hal",
+ "/org/freedesktop/Hal/devices/computer",
+ "org.freedesktop.Hal.Device.SystemPowerManagement",
+ "Reboot");
+ break;
- result = dbus_connection_send_with_reply_and_block (connection, message, 2000, &error);
- dbus_message_unref (message);
-
- /* check if we received a result */
- if (G_UNLIKELY (result == NULL))
- {
- g_warning (G_STRLOC ": Failed to contact HAL: %s", error.message);
- dbus_error_free (&error);
- return FALSE;
- }
-
- /* pretend that we succeed */
- dbus_message_unref (result);
- return TRUE;
+ DBusConnection *connection;
+ DBusMessage *method;
+ DBusMessage *result;
+ DBusError derror;
+ gint i;
+ gchar *methodname;
+ dbus_int32_t wakeup = 0;
+
+ for (i = 0; i < G_N_ELEMENTS (xfsm2hal); i++) {
+ if ( xfsm2hal[i].command == command ) {
+ methodname = xfsm2hal[i].name;
+ }
+ }
+
+ dbus_error_init(&derror);
+
+ connection = dbus_bus_get(DBUS_BUS_SYSTEM, &derror);
+
+ case XFSM_SHUTDOWN:
+ message = dbus_message_new_method_call ("org.freedesktop.Hal",
+ "/org/freedesktop/Hal/devices/computer",
+ "org.freedesktop.Hal.Device.SystemPowerManagement",
+ "Shutdown");
+ break;
+ if (connection == NULL)
+ return FALSE;
+
+ method = dbus_message_new_method_call(HAL_DBUS_SERVICE,
+ HAL_ROOT_COMPUTER,
+ HAL_DBUS_INTERFACE_POWER,
+ methodname);
+
+ case XFSM_SUSPEND:
+ {
+ dbus_int32_t wakeup = 0;
+ message = dbus_message_new_method_call ("org.freedesktop.Hal",
+ "/org/freedesktop/Hal/devices/computer",
+ "org.freedesktop.Hal.Device.SystemPowerManagement",
+ "Suspend");
+ dbus_message_append_args (message, DBUS_TYPE_INT32, &wakeup, DBUS_TYPE_INVALID);
+ break;
+ }
+
+ case XFSM_HIBERNATE:
+ message = dbus_message_new_method_call ("org.freedesktop.Hal",
+ "/org/freedesktop/Hal/devices/computer",
+ "org.freedesktop.Hal.Device.SystemPowerManagement",
+ "Hibernate");
+ break;
+ }
+
result = dbus_connection_send_with_reply_and_block (connection, message, 2000, &error);
dbus_message_unref (message);
Index: xfce4-session-4.3.99.2/xfce4-session/xfsm-shutdown-helper.h
===================================================================
--- xfce4-session-4.3.99.2.orig/xfce4-session/xfsm-shutdown-helper.h
+++ xfce4-session-4.3.99.2/xfce4-session/xfsm-shutdown-helper.h
@@ -27,8 +27,11 @@
+ if (command == XFSM_SUSPEND) {
+ dbus_message_append_args (method, DBUS_TYPE_INT32, &wakeup, DBUS_TYPE_INVALID);
+ }
+
+ result = dbus_connection_send_with_reply_and_block(connection, method, 2000, &derror);
+
+ dbus_message_unref(method);
+
+ if (result == NULL)
+ return FALSE;
+
+ dbus_message_unref(result);
+ return TRUE;
#else
return FALSE;
#endif
--- xfce4-session/xfsm-shutdown-helper.h
+++ xfce4-session/xfsm-shutdown-helper.h
@@ -27,8 +27,12 @@
typedef enum
{
- XFSM_SHUTDOWN_POWEROFF = 0,
- XFSM_SHUTDOWN_REBOOT = 1,
+ XFSM_SWITCH =-2,
+ XFSM_LOGOUT =-1,
+ XFSM_SHUTDOWN = 0,
+ XFSM_REBOOT = 1,

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:30abc35ce2ffdb6b4b8f14ac36ab73ac3f374e3970788396b29bf7ea018c29bf
size 18914
oid sha256:44a4512636c18d672332ed9e1b70df5b16d3da15cfb0e9420c3fd84626cc0e61
size 27931

View File

@ -1,3 +1,15 @@
-------------------------------------------------------------------
Tue Nov 18 14:10:07 CET 2008 - pnemec@suse.cz
- call update_desktop_file macro on desktop files [bnc#445722]
-------------------------------------------------------------------
Fri Nov 14 15:40:11 CET 2008 - prusnak@suse.cz
- updated suspend_hibernate.patch and renamed to logout-dialog
* adds switch user button, only works with gdm
- fixed crash in autostart-editor (autostart-editor-crash.patch)
-------------------------------------------------------------------
Wed Oct 29 22:05:46 CET 2008 - bwalle@suse.de

View File

@ -20,20 +20,22 @@
Name: xfce4-session
BuildRequires: dbus-1-devel gtk2-devel libxml2-devel perl-XML-Parser startup-notification update-desktop-files xorg-x11
%if %suse_version > 1010
%if 0%{?suse_version} > 1010
BuildRequires: dbus-1-glib-devel
%endif
BuildRequires: intltool xfce-mcs-manager-devel >= 4.3
Requires: fortune
Summary: Xfce Session manager
Version: 4.4.3
Release: 1
Release: 2
License: GPL v2 or later
Url: http://www.xfce.org/
Source0: %{name}-%{version}.tar.bz2
Source1: xfce4-session-ubuntu-icons.tar.bz2
Patch0: xfce4-session-suspend_hibernate.patch
Patch1: xfce4-session-faster-start.patch
Source1: %{name}-ubuntu-icons.tar.bz2
Patch0: %{name}-logout-dialog.patch
Patch1: %{name}-faster-start.patch
Patch2: %{name}-autostart-editor-crash.patch
Patch3: %{name}-configure.patch
Group: System/GUI/XFCE
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@ -56,7 +58,7 @@ Summary: Xfce Session manager
Group: System/GUI/XFCE
Requires: %{name} = %{version}
Requires: libxfcegui4-devel >= 4.3
Requires: libxml2-devel
Requires: libxml2-devel
%description devel
xfce4-session is the session manager for the Xfce desktop environment.
@ -73,13 +75,18 @@ Authors:
%prep
%setup -q
%patch0 -p1
%patch0
%patch1
%patch2
%build
%configure \
--enable-session-screenshots
make %{?jobs:-j%jobs}
%suse_update_desktop_file -i xfce-splash-settings X-XFCE Settings DesktopSettings
%suse_update_desktop_file -i xfce-session-settings X-XFCE Settings DesktopSettings
%suse_update_desktop_file -i xfce4-autostart-editor X-XFCE Settings DesktopSettings
%suse_update_desktop_file -i xfce4-tips-autostart X-XFCE Settings DesktopSettings
%install
make DESTDIR=$RPM_BUILD_ROOT install
@ -109,7 +116,7 @@ rm -rf $RPM_BUILD_ROOT
%{_libexecdir}/balou-export-theme
%{_libexecdir}/balou-install-theme
%{_libexecdir}/xfsm-shutdown-helper
%if %suse_version < 1030
%if 0%{?suse_version} && 0%{?suse_version} < 1030
%dir %{_sysconfdir}/xdg/autostart
%endif
%{_sysconfdir}/xdg/autostart/xfce4-tips-autostart.desktop
@ -124,6 +131,12 @@ rm -rf $RPM_BUILD_ROOT
%{_includedir}/xfce4/*/*
%changelog
* Tue Nov 18 2008 pnemec@suse.cz
- call update_desktop_file macro on desktop files [bnc#445722]
* Fri Nov 14 2008 prusnak@suse.cz
- updated suspend_hibernate.patch and renamed to logout-dialog
* adds switch user button, only works with gdm
- fixed crash in autostart-editor (autostart-editor-crash.patch)
* Wed Oct 29 2008 bwalle@suse.de
- update to 4.4.3
* translation polish