Hello community,
here is the log from the commit of package xfce4-session
checked in at Thu Nov 20 16:35:00 CET 2008.
--------
--- xfce4-session/xfce4-session.changes 2008-11-05 18:12:00.000000000 +0100
+++ /mounts/work_src_done/STABLE/xfce4-session/xfce4-session.changes 2008-11-19 11:54:13.000000000 +0100
@@ -1,0 +2,12 @@
+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)
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
xfce4-session-suspend_hibernate.patch
New:
----
xfce4-session-autostart-editor-crash.patch
xfce4-session-configure.patch
xfce4-session-logout-dialog.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ xfce4-session.spec ++++++
--- /var/tmp/diff_new_pack.go1992/_old 2008-11-20 16:30:18.000000000 +0100
+++ /var/tmp/diff_new_pack.go1992/_new 2008-11-20 16:30:18.000000000 +0100
@@ -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
@@ -73,13 +75,18 @@
%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 @@
%{_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 @@
%{_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
++++++ xfce4-session-autostart-editor-crash.patch ++++++
--- 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;
++++++ xfce4-session-configure.patch ++++++
--- 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
++++++ xfce4-session-logout-dialog.patch ++++++
--- settings/session/session.c
+++ settings/session/session.c
@@ -51,6 +51,8 @@ static GtkWidget *dialog = NULL;
static GtkWidget *general_chooser;
static GtkWidget *general_autosave;
static GtkWidget *general_prompt;
+static GtkWidget *general_hibernate_button;
+static GtkWidget *general_suspend_button;
static GtkWidget *advanced_kde;
static GtkWidget *advanced_gnome;
static GtkWidget *advanced_remote;
@@ -88,6 +90,8 @@ config_store (void)
{
xfce_rc_write_bool_entry (rc, "AutoSave", gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (general_autosave)));
xfce_rc_write_bool_entry (rc, "PromptOnLogout", gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (general_prompt)));
+ xfce_rc_write_bool_entry (rc, "HibernateButton", gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (general_hibernate_button)));
+ xfce_rc_write_bool_entry (rc, "SuspendButton", gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (general_suspend_button)));
}
if (G_LIKELY (kiosk_can_security))
{
@@ -124,10 +128,14 @@ general_create (XfceRc *rc)
gboolean autosave;
gboolean prompt;
gboolean chooser;
+ gboolean hibernate;
+ gboolean suspend;
xfce_rc_set_group (rc, "General");
autosave = xfce_rc_read_bool_entry (rc, "AutoSave", FALSE);
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);
@@ -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",
+ G_CALLBACK (config_store), NULL);
+ gtk_box_pack_start (GTK_BOX (vbox), general_hibernate_button, FALSE, TRUE, 0);
+ gtk_tooltips_set_tip (tooltips, general_hibernate_button,
+ _("This option adds a hibernate button to the logout dialog. "
+ "Only enable if you known your system suspends to"
+ "disk and resumes correctly."),
+ NULL);
+
+ general_suspend_button = gtk_check_button_new_with_label (_("Show suspend button"));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (general_suspend_button), suspend);
+ g_signal_connect (G_OBJECT (general_suspend_button), "toggled",
+ G_CALLBACK (config_store), NULL);
+ gtk_box_pack_start (GTK_BOX (vbox), general_suspend_button, FALSE, TRUE, 0);
+ gtk_tooltips_set_tip (tooltips, general_suspend_button,
+ _("This option adds a suspend button to the logout dialog. "
+ "Only enable if you known your system suspends to"
+ "RAM and resumes correctly."),
+ NULL);
+
return page;
}
--- xfce4-session/main.c
+++ xfce4-session/main.c
@@ -61,6 +61,11 @@
#include
#include
+#include
+
+
+#include
+#include
void
setup_environment (void)
@@ -225,8 +230,6 @@ initialize (int argc, char **argv)
int
main (int argc, char **argv)
{
- /* imported from xfsm-manager.c */
- extern gint shutdown_type;
xfce_textdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8");
@@ -248,5 +251,5 @@ main (int argc, char **argv)
ice_cleanup ();
- return xfsm_shutdown (shutdown_type);
+ return xfsm_shutdown ();
}
--- 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);
}
-static void
-logout_button_clicked (GtkWidget *b, gint *shutdownType)
-{
- *shutdownType = SHUTDOWN_LOGOUT;
-
- gtk_dialog_response (GTK_DIALOG (shutdown_dialog), GTK_RESPONSE_OK);
-}
+static gint shutdownType = XFSM_LOGOUT;
static void
-reboot_button_clicked (GtkWidget *b, gint *shutdownType)
+logout_dialog_button_clicked (GtkWidget *b, gint *cmd)
{
- *shutdownType = SHUTDOWN_REBOOT;
+ shutdownType = *cmd;
gtk_dialog_response (GTK_DIALOG (shutdown_dialog), GTK_RESPONSE_OK);
}
-static void
-halt_button_clicked (GtkWidget *b, gint *shutdownType)
+struct LogoutButton
{
- *shutdownType = SHUTDOWN_HALT;
-
- gtk_dialog_response (GTK_DIALOG (shutdown_dialog), GTK_RESPONSE_OK);
-}
+ gchar * label;
+ gchar * icon;
+ gint cmd;
+ gboolean present;
+ GtkWidget * button;
+};
+
+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 },
+ { N_("Suspend"), "xfsm-suspend", XFSM_SUSPEND, FALSE},
+ { N_("Hibernate"), "xfsm-hibernate", XFSM_HIBERNATE, FALSE},
+};
-/*
- */
gboolean
-shutdownDialog(gint *shutdownType, gboolean *saveSession)
+shutdownDialog(gboolean *saveSession)
{
gboolean accessibility;
XfsmFadeout *fadeout = NULL;
@@ -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;
- GtkWidget *reboot_button;
- GtkWidget *halt_button;
GtkWidget *cancel_button;
GtkWidget *ok_button;
GdkPixbuf *icon;
gboolean saveonexit;
gboolean autosave;
gboolean prompt;
+ gboolean have_suspend;
+ gboolean have_hibernate;
gint monitor;
gint result;
XfceKiosk *kiosk;
@@ -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)
@@ -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);
+ have_suspend = xfce_rc_read_bool_entry (rc, "SuspendButton", TRUE);
+ have_hibernate = xfce_rc_read_bool_entry (rc, "HibernateButton", TRUE);
/* if PromptOnLogout is off, saving depends on AutoSave */
if (!prompt)
{
xfce_rc_close (rc);
- *shutdownType = SHUTDOWN_LOGOUT;
+ shutdownType = XFSM_LOGOUT;
*saveSession = autosave;
return TRUE;
@@ -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);
+ 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 ();
- gtk_widget_show (logout_button);
- gtk_box_pack_start (GTK_BOX (hbox), logout_button, TRUE, TRUE, 0);
-
- g_signal_connect (logout_button, "clicked",
- G_CALLBACK (logout_button_clicked), shutdownType);
-
- vbox2 = gtk_vbox_new (FALSE, BORDER);
- gtk_container_set_border_width (GTK_CONTAINER (vbox2), BORDER);
- gtk_widget_show (vbox2);
- gtk_container_add (GTK_CONTAINER (logout_button), vbox2);
-
- icon = xfce_themed_icon_load ("xfsm-logout", 32);
- image = gtk_image_new_from_pixbuf (icon);
- gtk_widget_show (image);
- gtk_box_pack_start (GTK_BOX (vbox2), image, FALSE, FALSE, 0);
- g_object_unref (icon);
-
- label = gtk_label_new (_("Log Out"));
- gtk_widget_show (label);
- gtk_box_pack_start (GTK_BOX (vbox2), label, FALSE, FALSE, 0);
-
- /* reboot */
- reboot_button = gtk_button_new ();
- gtk_widget_show (reboot_button);
- gtk_box_pack_start (GTK_BOX (hbox), reboot_button, TRUE, TRUE, 0);
-
- g_signal_connect (reboot_button, "clicked",
- G_CALLBACK (reboot_button_clicked), shutdownType);
-
- vbox2 = gtk_vbox_new (FALSE, BORDER);
- gtk_container_set_border_width (GTK_CONTAINER (vbox2), BORDER);
- gtk_widget_show (vbox2);
- gtk_container_add (GTK_CONTAINER (reboot_button), vbox2);
-
- icon = xfce_themed_icon_load ("xfsm-reboot", 32);
- image = gtk_image_new_from_pixbuf (icon);
- gtk_widget_show (image);
- gtk_box_pack_start (GTK_BOX (vbox2), image, FALSE, FALSE, 0);
- g_object_unref (icon);
-
- label = gtk_label_new (_("Restart"));
- gtk_widget_show (label);
- gtk_box_pack_start (GTK_BOX (vbox2), label, FALSE, FALSE, 0);
-
- /* halt */
- halt_button = gtk_button_new ();
- gtk_widget_show (halt_button);
- gtk_box_pack_start (GTK_BOX (hbox), halt_button, TRUE, TRUE, 0);
-
- g_signal_connect (halt_button, "clicked",
- G_CALLBACK (halt_button_clicked), shutdownType);
-
- vbox2 = gtk_vbox_new (FALSE, BORDER);
- gtk_container_set_border_width (GTK_CONTAINER (vbox2), BORDER);
- gtk_widget_show (vbox2);
- gtk_container_add (GTK_CONTAINER (halt_button), vbox2);
-
- icon = xfce_themed_icon_load ("xfsm-shutdown", 32);
- image = gtk_image_new_from_pixbuf (icon);
- gtk_widget_show (image);
- gtk_box_pack_start (GTK_BOX (vbox2), image, FALSE, FALSE, 0);
- g_object_unref (icon);
-
- label = gtk_label_new (_("Shut Down"));
- 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++) {
+
+ if (logout_buttons[i].present == FALSE)
+ continue;
+
+ logout_button = gtk_button_new ();
+ gtk_widget_show (logout_button);
+ 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_CALLBACK (logout_dialog_button_clicked), &logout_buttons[i].cmd);
+
+ vbox2 = gtk_vbox_new (FALSE, BORDER);
+ gtk_container_set_border_width (GTK_CONTAINER (vbox2), BORDER);
+ gtk_widget_show (vbox2);
+ gtk_container_add (GTK_CONTAINER (logout_button), vbox2);
+
+ icon = xfce_themed_icon_load (logout_buttons[i].icon, 32);
+ image = gtk_image_new_from_pixbuf (icon);
+ gtk_widget_show (image);
+ gtk_box_pack_start (GTK_BOX (vbox2), image, FALSE, FALSE, 0);
+ g_object_unref (icon);
+
+ 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)
{
@@ -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 = 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 */
@@ -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
+ && shutdownType != XFSM_SWITCH
&& xfsm_shutdown_helper_need_password (shutdown_helper))
{
gtk_widget_show (ok_button);
@@ -533,6 +508,21 @@ shutdownDialog(gint *shutdownType, gbool
gdk_flush ();
}
+ /*
+ * For suspend/hibernate perform the action but do not
+ * close the session so it is still there on resume
+ */
+ if (result == GTK_RESPONSE_OK
+ && (shutdownType == XFSM_SUSPEND || shutdownType == XFSM_HIBERNATE)) {
+ 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);
@@ -571,7 +561,7 @@ shutdownDialog(gint *shutdownType, gbool
/*
*/
gint
-xfsm_shutdown(gint type)
+xfsm_shutdown(void)
{
gboolean result;
@@ -589,7 +579,7 @@ xfsm_shutdown(gint type)
sync ();
#endif
- if (type == SHUTDOWN_LOGOUT)
+ if (shutdownType == XFSM_LOGOUT)
return EXIT_SUCCESS;
if (shutdown_helper == NULL)
@@ -598,16 +588,7 @@ xfsm_shutdown(gint type)
return EXIT_FAILURE;
}
- if (type == SHUTDOWN_HALT)
- {
- result = xfsm_shutdown_helper_send_command (shutdown_helper,
- XFSM_SHUTDOWN_POWEROFF);
- }
- else
- {
- result = xfsm_shutdown_helper_send_command (shutdown_helper,
- XFSM_SHUTDOWN_REBOOT);
- }
+ result = xfsm_shutdown_helper_send_command (shutdown_helper, shutdownType);
xfsm_shutdown_helper_destroy (shutdown_helper);
shutdown_helper = NULL;
--- xfce4-session/shutdown.h
+++ xfce4-session/shutdown.h
@@ -24,13 +24,8 @@
#include
-/* */
-#define SHUTDOWN_LOGOUT 0
-#define SHUTDOWN_REBOOT 1
-#define SHUTDOWN_HALT 2
-
/* prototypes */
-extern gboolean shutdownDialog(gint *, gboolean *);
-extern gint xfsm_shutdown(gint);
+extern gboolean shutdownDialog(gboolean *);
+extern gint xfsm_shutdown(void);
#endif /* !__XFSM_SHUTDOWN_H__ */
--- 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;
gboolean failsafe_mode = TRUE;
-gint shutdown_type = SHUTDOWN_LOGOUT;
XfsmSplashScreen *splash_screen = NULL;
void
--- 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;
extern gboolean failsafe_mode;
-extern gint shutdown_type;
extern XfsmSplashScreen *splash_screen;
--- xfce4-session/xfsm-manager.c
+++ xfce4-session/xfsm-manager.c
@@ -801,7 +801,7 @@ xfsm_manager_save_yourself (XfsmClient *
}
else
{
- if (!fast && shutdown && !shutdownDialog (&shutdown_type, &shutdown_save))
+ if (!fast && shutdown && !shutdownDialog (&shutdown_save))
return;
if (!shutdown || shutdown_save)
--- xfce4-session/xfsm-shutdown-helper.c
+++ xfce4-session/xfsm-shutdown-helper.c
@@ -55,6 +55,12 @@
#ifdef HAVE_DBUS
#include
+#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
@@ -74,6 +80,17 @@ struct _XfsmShutdownHelper
};
+static struct
+{
+ XfsmShutdownCommand command;
+ gchar * name;
+} xfsm2hal[] =
+{
+ { XFSM_REBOOT, "Reboot"},
+ { XFSM_SHUTDOWN, "Shutdown"},
+ { XFSM_SUSPEND, "Suspend"},
+ { XFSM_HIBERNATE, "Hibernate"}
+};
static gboolean
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");
- 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);
+
+ if (connection == NULL)
+ return FALSE;
+
+ method = dbus_message_new_method_call(HAL_DBUS_SERVICE,
+ HAL_ROOT_COMPUTER,
+ HAL_DBUS_INTERFACE_POWER,
+ methodname);
+
+ 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,
+ XFSM_SUSPEND = 2,
+ XFSM_HIBERNATE = 3,
} XfsmShutdownCommand;
++++++ xfce4-session-ubuntu-icons.tar.bz2 ++++++
Files old/icons/hicolor/48x48/apps/xfce4-autostart-editor.png and new/icons/hicolor/48x48/apps/xfce4-autostart-editor.png differ
Files old/icons/hicolor/48x48/apps/xfsm-lockscreen.png and new/icons/hicolor/48x48/apps/xfsm-lockscreen.png differ
Files old/icons/hicolor/48x48/apps/xfsm-switch.png and new/icons/hicolor/48x48/apps/xfsm-switch.png differ
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org