[Xfce4-commits] <xfce4-session:nick/shutdown-cleanup> Move things around a bit to cleanup.

Nick Schermer noreply at xfce.org
Sun Jan 15 10:22:02 CET 2012


Updating branch refs/heads/nick/shutdown-cleanup
         to 36fd77a23750f6ff6014bfc4ef477c34321947cb (commit)
       from 877b690c6214b135e5ad1f93d1afe86b569560bc (commit)

commit 36fd77a23750f6ff6014bfc4ef477c34321947cb
Author: Nick Schermer <nick at xfce.org>
Date:   Sun Nov 6 13:20:48 2011 +0100

    Move things around a bit to cleanup.
    
    Separate the logout dialog from the shutdown function
    and give everything xfsm_* functionnames. Cleanup Makefile.am
    a bit too and drop the generated dbus file.

 xfce4-session/Makefile.am                          |   78 +++---
 xfce4-session/ice-layer.h                          |    2 +-
 xfce4-session/main.c                               |    4 +-
 xfce4-session/sm-layer.h                           |    2 +-
 .../{chooser-icon.png => xfsm-chooser-icon.png}    |  Bin 8957 -> 8957 bytes
 xfce4-session/xfsm-client-dbus.h                   |  266 --------------------
 xfce4-session/xfsm-client.c                        |   12 +-
 xfce4-session/xfsm-dns.c                           |    2 +-
 xfce4-session/xfsm-error.c                         |    2 +-
 xfce4-session/xfsm-global.c                        |    1 -
 xfce4-session/xfsm-legacy.c                        |    2 +-
 xfce4-session/{shutdown.c => xfsm-logout-dialog.c} |  139 ++++-------
 xfce4-session/{sm-layer.h => xfsm-logout-dialog.h} |   19 +-
 xfce4-session/xfsm-manager.c                       |   27 +-
 xfce4-session/xfsm-manager.h                       |    4 +-
 xfce4-session/xfsm-shutdown-helper.c               |    4 +-
 xfce4-session/xfsm-shutdown-helper.h               |    3 +-
 xfce4-session/xfsm-shutdown.c                      |  107 ++++++++
 xfce4-session/{shutdown.h => xfsm-shutdown.h}      |   10 +-
 xfce4-session/xfsm-startup.c                       |    2 +-
 20 files changed, 242 insertions(+), 444 deletions(-)

diff --git a/xfce4-session/Makefile.am b/xfce4-session/Makefile.am
index b486cbb..b7c5e21 100644
--- a/xfce4-session/Makefile.am
+++ b/xfce4-session/Makefile.am
@@ -1,20 +1,31 @@
-# $Id$
 
 INCLUDES =								\
 	-I$(top_builddir)						\
-	-I$(top_srcdir)
+	-DG_LOG_DOMAIN=\"xfce4-session\"				\
+	-DLIBDIR=\"$(libdir)\"						\
+	-DPACKAGE_LOCALE_DIR=\"$(localedir)\"				\
+	-DSYSCONFDIR=\"$(sysconfdir)\"					\
+	-DXFSM_SHUTDOWN_HELPER_CMD=\"$(HELPER_PATH_PREFIX)/xfce4/session/xfsm-shutdown-helper\" \
+	-DDBUS_API_SUBJECT_TO_CHANGE					\
+	-DWNCK_I_KNOW_THIS_IS_UNSTABLE					\
+	$(PLATFORM_CPPFLAGS)
 
 man_MANS = xfce4-session.1
 
 bin_PROGRAMS = xfce4-session
 
+xfce4_session_built_sources =						\
+	xfsm-chooser-icon.h						\
+	xfsm-client-dbus.h						\
+	xfsm-manager-dbus.h						\
+	xfsm-marshal.c							\
+	xfsm-marshal.h
+
 xfce4_session_SOURCES =							\
-	chooser-icon.h							\
+	$(xfce4_session_built_sources)					\
 	ice-layer.c							\
 	ice-layer.h							\
 	main.c								\
-	shutdown.c							\
-	shutdown.h							\
 	sm-layer.c							\
 	sm-layer.h							\
 	xfsm-chooser.c							\
@@ -36,13 +47,14 @@ xfce4_session_SOURCES =							\
 	xfsm-global.h							\
 	xfsm-legacy.c							\
 	xfsm-legacy.h							\
+	xfsm-logout-dialog.c						\
+	xfsm-logout-dialog.h						\
 	xfsm-manager.c							\
 	xfsm-manager.h							\
-	xfsm-manager-dbus.h						\
-	xfsm-marshal.c							\
-	xfsm-marshal.h							\
 	xfsm-properties.c						\
 	xfsm-properties.h						\
+	xfsm-shutdown.c							\
+	xfsm-shutdown.h							\
 	xfsm-shutdown-helper.c						\
 	xfsm-shutdown-helper.h						\
 	xfsm-splash-screen.c						\
@@ -58,13 +70,11 @@ xfce4_session_CFLAGS =							\
 	$(DBUS_CFLAGS)							\
 	$(DBUS_GLIB_CFLAGS)						\
 	$(LIBWNCK_CFLAGS)						\
-	$(XFCONF_CFLAGS)						\
-	-DDBUS_API_SUBJECT_TO_CHANGE					\
-	-DWNCK_I_KNOW_THIS_IS_UNSTABLE					\
-	-DLIBDIR=\"$(libdir)\"						\
-	-DPACKAGE_LOCALE_DIR=\"$(localedir)\"				\
-	-DSYSCONFDIR=\"$(sysconfdir)\"					\
-	-DXFSM_SHUTDOWN_HELPER_CMD=\"$(HELPER_PATH_PREFIX)/xfce4/session/xfsm-shutdown-helper\"
+	$(XFCONF_CFLAGS)
+
+xfce4_session_LDFLAGS =							\
+	-no-undefined							\
+	$(PLATFORM_LDFLAGS)
 
 xfce4_session_LDADD =							\
 	$(top_builddir)/libxfsm/libxfsm-4.6.la				\
@@ -82,27 +92,17 @@ xfce4_session_LDADD =							\
 xfce4_session_DEPENDENCIES =						\
 	$(top_builddir)/libxfsm/libxfsm-4.6.la
 
-
 if MAINTAINER_MODE
 
-BUILT_SOURCES =								\
-	xfsm-client-dbus.h						\
-	xfsm-manager-dbus.h						\
-	xfsm-marshal.c							\
-	xfsm-marshal.h							\
-	chooser-icon.h
+xfsm-chooser-icon.h: $(srcdir)/xfsm-chooser-icon.png
+	$(AM_V_GEN) gdk-pixbuf-csource --static --raw --stream --name=xfsm_chooser_icon_data $< > $@
 
-chooser-icon.h: $(srcdir)/chooser-icon.png
-	$(AM_V_GEN) gdk-pixbuf-csource --static --raw --stream --name=chooser_icon_data $< > $@
+xfsm-marshal.h: xfsm-marshal.list Makefile
+	$(AM_V_GEN) glib-genmarshal --prefix=xfsm_marshal --internal --header $< > $@
 
-xfsm-marshal.h: stamp-xfsm-marshal.h
-	@true
-stamp-xfsm-marshal.h: xfsm-marshal.list Makefile
-	$(AM_V_GEN) glib-genmarshal --prefix=xfsm_marshal xfsm-marshal.list --header > xfsm-marshal.h
-	echo timestamp > $(@F)
 xfsm-marshal.c: xfsm-marshal.list Makefile
-	$(AM_V_GEN) echo '#include "xfsm-marshal.h"' > $@
-	glib-genmarshal --prefix=xfsm_marshal xfsm-marshal.list --body >> xfsm-marshal.c
+	$(AM_V_GEN) echo "#include <xfce4-session/xfsm-marshal.h>" > $@ \
+	&& glib-genmarshal --prefix=xfsm_marshal --body $< >> $@
 
 xfsm-manager-dbus.h: $(srcdir)/xfsm-manager-dbus.xml
 	$(AM_V_GEN) dbus-binding-tool --mode=glib-server --prefix=xfsm_manager $< > $@
@@ -110,13 +110,19 @@ xfsm-manager-dbus.h: $(srcdir)/xfsm-manager-dbus.xml
 xfsm-client-dbus.h: $(srcdir)/xfsm-client-dbus.xml
 	$(AM_V_GEN) dbus-binding-tool --mode=glib-server --prefix=xfsm_client $< > $@
 
-DISTCLEANFILES =								\
-	$(BUILT_SOURCES)
+DISTCLEANFILES =							\
+	$(xfce4_session_built_sources)
 
-endif
+BUILT_SOURCES =								\
+	$(xfce4_session_built_sources)
 
+endif
 
 EXTRA_DIST =								\
 	$(man_MANS)							\
-	chooser-icon.png						\
-	xfsm-marshal.list
+	xfsm-chooser-icon.png						\
+	xfsm-marshal.list						\
+	xfsm-client-dbus.xml						\
+	xfsm-manager-dbus.xml
+
+# vi:set ts=8 sw=8 noet ai nocindent syntax=automake:
diff --git a/xfce4-session/ice-layer.h b/xfce4-session/ice-layer.h
index 5d6b3d6..7e8d81b 100644
--- a/xfce4-session/ice-layer.h
+++ b/xfce4-session/ice-layer.h
@@ -26,7 +26,7 @@
 
 #include <glib.h>
 
-#include "xfsm-manager.h"
+#include <xfce4-session/xfsm-manager.h>
 
 Bool     ice_auth_proc       (char         *hostname);
 gboolean ice_setup_listeners (int           num_listeners,
diff --git a/xfce4-session/main.c b/xfce4-session/main.c
index 8f7c003..e88b895 100644
--- a/xfce4-session/main.c
+++ b/xfce4-session/main.c
@@ -60,13 +60,13 @@
 #include <libxfsm/xfsm-util.h>
 
 #include <xfce4-session/ice-layer.h>
-#include <xfce4-session/shutdown.h>
 #include <xfce4-session/sm-layer.h>
 #include <xfce4-session/xfsm-dns.h>
 #include <xfce4-session/xfsm-global.h>
 #include <xfce4-session/xfsm-manager.h>
+#include <xfce4-session/xfsm-shutdown.h>
 #include <xfce4-session/xfsm-startup.h>
-#include "xfsm-error.h"
+#include <xfce4-session/xfsm-error.h>
 
 static gboolean opt_disable_tcp = FALSE;
 static gboolean opt_version = FALSE;
diff --git a/xfce4-session/sm-layer.h b/xfce4-session/sm-layer.h
index 90cf96a..fc50487 100644
--- a/xfce4-session/sm-layer.h
+++ b/xfce4-session/sm-layer.h
@@ -25,7 +25,7 @@
 #include <xfconf/xfconf.h>
 #include <libxfce4util/libxfce4util.h>
 
-#include "xfsm-manager.h"
+#include <xfce4-session/xfsm-manager.h>
 
 void sm_init (XfconfChannel *channel,
               gboolean       disable_tcp,
diff --git a/xfce4-session/chooser-icon.png b/xfce4-session/xfsm-chooser-icon.png
similarity index 100%
rename from xfce4-session/chooser-icon.png
rename to xfce4-session/xfsm-chooser-icon.png
diff --git a/xfce4-session/xfsm-client-dbus.h b/xfce4-session/xfsm-client-dbus.h
deleted file mode 100644
index 06545e6..0000000
--- a/xfce4-session/xfsm-client-dbus.h
+++ /dev/null
@@ -1,266 +0,0 @@
-/* Generated by dbus-binding-tool; do not edit! */
-
-
-#ifndef __dbus_glib_marshal_xfsm_client_MARSHAL_H__
-#define __dbus_glib_marshal_xfsm_client_MARSHAL_H__
-
-#include	<glib-object.h>
-
-G_BEGIN_DECLS
-
-#ifdef G_ENABLE_DEBUG
-#define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
-#define g_marshal_value_peek_char(v)     g_value_get_char (v)
-#define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
-#define g_marshal_value_peek_int(v)      g_value_get_int (v)
-#define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
-#define g_marshal_value_peek_long(v)     g_value_get_long (v)
-#define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
-#define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
-#define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
-#define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
-#define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
-#define g_marshal_value_peek_float(v)    g_value_get_float (v)
-#define g_marshal_value_peek_double(v)   g_value_get_double (v)
-#define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
-#define g_marshal_value_peek_param(v)    g_value_get_param (v)
-#define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
-#define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
-#define g_marshal_value_peek_object(v)   g_value_get_object (v)
-#else /* !G_ENABLE_DEBUG */
-/* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
- *          Do not access GValues directly in your code. Instead, use the
- *          g_value_get_*() functions
- */
-#define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
-#define g_marshal_value_peek_char(v)     (v)->data[0].v_int
-#define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
-#define g_marshal_value_peek_int(v)      (v)->data[0].v_int
-#define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
-#define g_marshal_value_peek_long(v)     (v)->data[0].v_long
-#define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
-#define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
-#define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
-#define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
-#define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
-#define g_marshal_value_peek_float(v)    (v)->data[0].v_float
-#define g_marshal_value_peek_double(v)   (v)->data[0].v_double
-#define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
-#define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
-#define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
-#define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
-#define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
-#endif /* !G_ENABLE_DEBUG */
-
-
-/* BOOLEAN:BOXED,POINTER */
-extern void dbus_glib_marshal_xfsm_client_BOOLEAN__BOXED_POINTER (GClosure     *closure,
-                                                                  GValue       *return_value,
-                                                                  guint         n_param_values,
-                                                                  const GValue *param_values,
-                                                                  gpointer      invocation_hint,
-                                                                  gpointer      marshal_data);
-void
-dbus_glib_marshal_xfsm_client_BOOLEAN__BOXED_POINTER (GClosure     *closure,
-                                                      GValue       *return_value G_GNUC_UNUSED,
-                                                      guint         n_param_values,
-                                                      const GValue *param_values,
-                                                      gpointer      invocation_hint G_GNUC_UNUSED,
-                                                      gpointer      marshal_data)
-{
-  typedef gboolean (*GMarshalFunc_BOOLEAN__BOXED_POINTER) (gpointer     data1,
-                                                           gpointer     arg_1,
-                                                           gpointer     arg_2,
-                                                           gpointer     data2);
-  register GMarshalFunc_BOOLEAN__BOXED_POINTER callback;
-  register GCClosure *cc = (GCClosure*) closure;
-  register gpointer data1, data2;
-  gboolean v_return;
-
-  g_return_if_fail (return_value != NULL);
-  g_return_if_fail (n_param_values == 3);
-
-  if (G_CCLOSURE_SWAP_DATA (closure))
-    {
-      data1 = closure->data;
-      data2 = g_value_peek_pointer (param_values + 0);
-    }
-  else
-    {
-      data1 = g_value_peek_pointer (param_values + 0);
-      data2 = closure->data;
-    }
-  callback = (GMarshalFunc_BOOLEAN__BOXED_POINTER) (marshal_data ? marshal_data : cc->callback);
-
-  v_return = callback (data1,
-                       g_marshal_value_peek_boxed (param_values + 1),
-                       g_marshal_value_peek_pointer (param_values + 2),
-                       data2);
-
-  g_value_set_boolean (return_value, v_return);
-}
-
-/* BOOLEAN:POINTER */
-extern void dbus_glib_marshal_xfsm_client_BOOLEAN__POINTER (GClosure     *closure,
-                                                            GValue       *return_value,
-                                                            guint         n_param_values,
-                                                            const GValue *param_values,
-                                                            gpointer      invocation_hint,
-                                                            gpointer      marshal_data);
-void
-dbus_glib_marshal_xfsm_client_BOOLEAN__POINTER (GClosure     *closure,
-                                                GValue       *return_value G_GNUC_UNUSED,
-                                                guint         n_param_values,
-                                                const GValue *param_values,
-                                                gpointer      invocation_hint G_GNUC_UNUSED,
-                                                gpointer      marshal_data)
-{
-  typedef gboolean (*GMarshalFunc_BOOLEAN__POINTER) (gpointer     data1,
-                                                     gpointer     arg_1,
-                                                     gpointer     data2);
-  register GMarshalFunc_BOOLEAN__POINTER callback;
-  register GCClosure *cc = (GCClosure*) closure;
-  register gpointer data1, data2;
-  gboolean v_return;
-
-  g_return_if_fail (return_value != NULL);
-  g_return_if_fail (n_param_values == 2);
-
-  if (G_CCLOSURE_SWAP_DATA (closure))
-    {
-      data1 = closure->data;
-      data2 = g_value_peek_pointer (param_values + 0);
-    }
-  else
-    {
-      data1 = g_value_peek_pointer (param_values + 0);
-      data2 = closure->data;
-    }
-  callback = (GMarshalFunc_BOOLEAN__POINTER) (marshal_data ? marshal_data : cc->callback);
-
-  v_return = callback (data1,
-                       g_marshal_value_peek_pointer (param_values + 1),
-                       data2);
-
-  g_value_set_boolean (return_value, v_return);
-}
-
-/* BOOLEAN:BOXED,POINTER,POINTER */
-extern void dbus_glib_marshal_xfsm_client_BOOLEAN__BOXED_POINTER_POINTER (GClosure     *closure,
-                                                                          GValue       *return_value,
-                                                                          guint         n_param_values,
-                                                                          const GValue *param_values,
-                                                                          gpointer      invocation_hint,
-                                                                          gpointer      marshal_data);
-void
-dbus_glib_marshal_xfsm_client_BOOLEAN__BOXED_POINTER_POINTER (GClosure     *closure,
-                                                              GValue       *return_value G_GNUC_UNUSED,
-                                                              guint         n_param_values,
-                                                              const GValue *param_values,
-                                                              gpointer      invocation_hint G_GNUC_UNUSED,
-                                                              gpointer      marshal_data)
-{
-  typedef gboolean (*GMarshalFunc_BOOLEAN__BOXED_POINTER_POINTER) (gpointer     data1,
-                                                                   gpointer     arg_1,
-                                                                   gpointer     arg_2,
-                                                                   gpointer     arg_3,
-                                                                   gpointer     data2);
-  register GMarshalFunc_BOOLEAN__BOXED_POINTER_POINTER callback;
-  register GCClosure *cc = (GCClosure*) closure;
-  register gpointer data1, data2;
-  gboolean v_return;
-
-  g_return_if_fail (return_value != NULL);
-  g_return_if_fail (n_param_values == 4);
-
-  if (G_CCLOSURE_SWAP_DATA (closure))
-    {
-      data1 = closure->data;
-      data2 = g_value_peek_pointer (param_values + 0);
-    }
-  else
-    {
-      data1 = g_value_peek_pointer (param_values + 0);
-      data2 = closure->data;
-    }
-  callback = (GMarshalFunc_BOOLEAN__BOXED_POINTER_POINTER) (marshal_data ? marshal_data : cc->callback);
-
-  v_return = callback (data1,
-                       g_marshal_value_peek_boxed (param_values + 1),
-                       g_marshal_value_peek_pointer (param_values + 2),
-                       g_marshal_value_peek_pointer (param_values + 3),
-                       data2);
-
-  g_value_set_boolean (return_value, v_return);
-}
-
-/* BOOLEAN:POINTER,POINTER */
-extern void dbus_glib_marshal_xfsm_client_BOOLEAN__POINTER_POINTER (GClosure     *closure,
-                                                                    GValue       *return_value,
-                                                                    guint         n_param_values,
-                                                                    const GValue *param_values,
-                                                                    gpointer      invocation_hint,
-                                                                    gpointer      marshal_data);
-void
-dbus_glib_marshal_xfsm_client_BOOLEAN__POINTER_POINTER (GClosure     *closure,
-                                                        GValue       *return_value G_GNUC_UNUSED,
-                                                        guint         n_param_values,
-                                                        const GValue *param_values,
-                                                        gpointer      invocation_hint G_GNUC_UNUSED,
-                                                        gpointer      marshal_data)
-{
-  typedef gboolean (*GMarshalFunc_BOOLEAN__POINTER_POINTER) (gpointer     data1,
-                                                             gpointer     arg_1,
-                                                             gpointer     arg_2,
-                                                             gpointer     data2);
-  register GMarshalFunc_BOOLEAN__POINTER_POINTER callback;
-  register GCClosure *cc = (GCClosure*) closure;
-  register gpointer data1, data2;
-  gboolean v_return;
-
-  g_return_if_fail (return_value != NULL);
-  g_return_if_fail (n_param_values == 3);
-
-  if (G_CCLOSURE_SWAP_DATA (closure))
-    {
-      data1 = closure->data;
-      data2 = g_value_peek_pointer (param_values + 0);
-    }
-  else
-    {
-      data1 = g_value_peek_pointer (param_values + 0);
-      data2 = closure->data;
-    }
-  callback = (GMarshalFunc_BOOLEAN__POINTER_POINTER) (marshal_data ? marshal_data : cc->callback);
-
-  v_return = callback (data1,
-                       g_marshal_value_peek_pointer (param_values + 1),
-                       g_marshal_value_peek_pointer (param_values + 2),
-                       data2);
-
-  g_value_set_boolean (return_value, v_return);
-}
-
-G_END_DECLS
-
-#endif /* __dbus_glib_marshal_xfsm_client_MARSHAL_H__ */
-
-#include <dbus/dbus-glib.h>
-static const DBusGMethodInfo dbus_glib_xfsm_client_methods[] = {
-  { (GCallback) xfsm_client_dbus_get_id, dbus_glib_marshal_xfsm_client_BOOLEAN__POINTER_POINTER, 0 },
-  { (GCallback) xfsm_client_dbus_get_state, dbus_glib_marshal_xfsm_client_BOOLEAN__POINTER_POINTER, 44 },
-  { (GCallback) xfsm_client_dbus_get_all_sm_properties, dbus_glib_marshal_xfsm_client_BOOLEAN__POINTER_POINTER, 94 },
-  { (GCallback) xfsm_client_dbus_get_sm_properties, dbus_glib_marshal_xfsm_client_BOOLEAN__BOXED_POINTER_POINTER, 163 },
-  { (GCallback) xfsm_client_dbus_set_sm_properties, dbus_glib_marshal_xfsm_client_BOOLEAN__BOXED_POINTER, 236 },
-  { (GCallback) xfsm_client_dbus_delete_sm_properties, dbus_glib_marshal_xfsm_client_BOOLEAN__BOXED_POINTER, 298 },
-  { (GCallback) xfsm_client_dbus_terminate, dbus_glib_marshal_xfsm_client_BOOLEAN__POINTER, 355 },
-};
-
-const DBusGObjectInfo dbus_glib_xfsm_client_object_info = {  1,
-  dbus_glib_xfsm_client_methods,
-  7,
-"org.xfce.Session.Client\0GetID\0S\0id\0O\0F\0N\0s\0\0org.xfce.Session.Client\0GetState\0S\0state\0O\0F\0N\0u\0\0org.xfce.Session.Client\0GetAllSmProperties\0S\0properties\0O\0F\0N\0a{sv}\0\0org.xfce.Session.Client\0GetSmProperties\0S\0names\0I\0as\0values\0O\0F\0N\0a{sv}\0\0org.xfce.Session.Client\0SetSmProperties\0S\0properties\0I\0a{sv}\0\0org.xfce.Session.Client\0DeleteSmProperties\0S\0names\0I\0as\0\0org.xfce.Session.Client\0Terminate\0S\0\0\0",
-"org.xfce.Session.Client\0StateChanged\0org.xfce.Session.Client\0SmPropertyChanged\0org.xfce.Session.Client\0SmPropertyDeleted\0\0",
-"\0"
-};
-
diff --git a/xfce4-session/xfsm-client.c b/xfce4-session/xfsm-client.c
index 9f879d6..0455c6c 100644
--- a/xfce4-session/xfsm-client.c
+++ b/xfce4-session/xfsm-client.c
@@ -32,11 +32,11 @@
 
 #include <libxfsm/xfsm-util.h>
 
-#include "xfsm-client.h"
-#include "xfsm-manager.h"
-#include "xfsm-global.h"
-#include "xfsm-marshal.h"
-#include "xfsm-error.h"
+#include <xfce4-session/xfsm-client.h>
+#include <xfce4-session/xfsm-manager.h>
+#include <xfce4-session/xfsm-global.h>
+#include <xfce4-session/xfsm-marshal.h>
+#include <xfce4-session/xfsm-error.h>
 
 #define XFSM_CLIENT_OBJECT_PATH_PREFIX  "/org/xfce/SessionClients/"
 
@@ -417,7 +417,7 @@ static gboolean xfsm_client_dbus_terminate (XfsmClient *client,
 
 
 /* header needs the above fwd decls */
-#include "xfsm-client-dbus.h"
+#include <xfce4-session/xfsm-client-dbus.h>
 
 
 static void
diff --git a/xfce4-session/xfsm-dns.c b/xfce4-session/xfsm-dns.c
index 0275426..abb9cef 100644
--- a/xfce4-session/xfsm-dns.c
+++ b/xfce4-session/xfsm-dns.c
@@ -55,7 +55,7 @@
 
 #include <libxfsm/xfsm-util.h>
 
-#include "xfsm-dns.h"
+#include <xfce4-session/xfsm-dns.h>
 #include <xfce4-session/xfsm-global.h>
 
 
diff --git a/xfce4-session/xfsm-error.c b/xfce4-session/xfsm-error.c
index 399230a..f4d9c69 100644
--- a/xfce4-session/xfsm-error.c
+++ b/xfce4-session/xfsm-error.c
@@ -22,7 +22,7 @@
 
 #include <dbus/dbus-glib.h>
 
-#include "xfsm-error.h"
+#include <xfce4-session/xfsm-error.h>
 
 
 GQuark
diff --git a/xfce4-session/xfsm-global.c b/xfce4-session/xfsm-global.c
index fa5bbaf..1d5ed37 100644
--- a/xfce4-session/xfsm-global.c
+++ b/xfce4-session/xfsm-global.c
@@ -45,7 +45,6 @@
 #include <libxfce4util/libxfce4util.h>
 #include <libxfce4ui/libxfce4ui.h>
 
-#include <xfce4-session/shutdown.h>
 #include <xfce4-session/xfsm-global.h>
 
 #include <libxfsm/xfsm-util.h>
diff --git a/xfce4-session/xfsm-legacy.c b/xfce4-session/xfsm-legacy.c
index c730b30..7f29ea3 100644
--- a/xfce4-session/xfsm-legacy.c
+++ b/xfce4-session/xfsm-legacy.c
@@ -74,7 +74,7 @@
 
 #include <libwnck/libwnck.h>
 
-#include "xfsm-legacy.h"
+#include <xfce4-session/xfsm-legacy.h>
 #include <libxfsm/xfsm-util.h>
 
 
diff --git a/xfce4-session/shutdown.c b/xfce4-session/xfsm-logout-dialog.c
similarity index 90%
rename from xfce4-session/shutdown.c
rename to xfce4-session/xfsm-logout-dialog.c
index 45031ba..8b2fc15 100644
--- a/xfce4-session/shutdown.c
+++ b/xfce4-session/xfsm-logout-dialog.c
@@ -1,3 +1,26 @@
+/*-
+ * Copyright (c) 2003-2004 Benedikt Meurer <benny at xfce.org>
+ * All rights reserved.
+ *
+ * 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, 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.
+ *
+ * Parts of this file where taken from gnome-session/logout.c, which
+ * was written by Owen Taylor <otaylor at redhat.com>.
+ */
+
 /* $Id$ */
 /*-
  * Copyright (c) 2003-2004 Benedikt Meurer <benny at xfce.org>
@@ -58,7 +81,7 @@
 
 #include <libxfsm/xfsm-util.h>
 
-#include <xfce4-session/shutdown.h>
+#include <xfce4-session/xfsm-logout-dialog.h>
 #include <xfce4-session/xfsm-compat-gnome.h>
 #include <xfce4-session/xfsm-compat-kde.h>
 #include <xfce4-session/xfsm-fadeout.h>
@@ -123,41 +146,41 @@ entry_activate_cb (GtkWidget *entry, GtkDialog *dialog)
 }
 
 static void
-logout_button_clicked (GtkWidget *b, gint *shutdownType)
+logout_button_clicked (GtkWidget *b, gint *shutdown_type)
 {
-    *shutdownType = XFSM_SHUTDOWN_LOGOUT;
+    *shutdown_type = XFSM_SHUTDOWN_LOGOUT;
 
     gtk_dialog_response (GTK_DIALOG (shutdown_dialog), GTK_RESPONSE_OK);
 }
 
 static void
-reboot_button_clicked (GtkWidget *b, gint *shutdownType)
+reboot_button_clicked (GtkWidget *b, gint *shutdown_type)
 {
-    *shutdownType = XFSM_SHUTDOWN_REBOOT;
+    *shutdown_type = XFSM_SHUTDOWN_REBOOT;
 
     gtk_dialog_response (GTK_DIALOG (shutdown_dialog), GTK_RESPONSE_OK);
 }
 
 static void
-halt_button_clicked (GtkWidget *b, gint *shutdownType)
+halt_button_clicked (GtkWidget *b, gint *shutdown_type)
 {
-    *shutdownType = XFSM_SHUTDOWN_HALT;
+    *shutdown_type = XFSM_SHUTDOWN_HALT;
 
     gtk_dialog_response (GTK_DIALOG (shutdown_dialog), GTK_RESPONSE_OK);
 }
 
 static void
-suspend_button_clicked (GtkWidget *b, gint *shutdownType)
+suspend_button_clicked (GtkWidget *b, gint *shutdown_type)
 {
-    *shutdownType = XFSM_SHUTDOWN_SUSPEND;
+    *shutdown_type = XFSM_SHUTDOWN_SUSPEND;
 
     gtk_dialog_response (GTK_DIALOG (shutdown_dialog), GTK_RESPONSE_OK);
 }
 
 static void
-hibernate_button_clicked (GtkWidget *b, gint *shutdownType)
+hibernate_button_clicked (GtkWidget *b, gint *shutdown_type)
 {
-    *shutdownType = XFSM_SHUTDOWN_HIBERNATE;
+    *shutdown_type = XFSM_SHUTDOWN_HIBERNATE;
 
     gtk_dialog_response (GTK_DIALOG (shutdown_dialog), GTK_RESPONSE_OK);
 }
@@ -165,7 +188,9 @@ hibernate_button_clicked (GtkWidget *b, gint *shutdownType)
 /*
  */
 gboolean
-shutdownDialog(const gchar *sessionName, XfsmShutdownType *shutdownType, gboolean *saveSession)
+xfsm_logout_dialog (const gchar      *session_name,
+                    XfsmShutdownType *shutdown_type,
+                    gboolean         *save_session)
 {
   gboolean accessibility;
   GtkIconTheme *icon_theme;
@@ -217,8 +242,8 @@ shutdownDialog(const gchar *sessionName, XfsmShutdownType *shutdownType, gboolea
   struct passwd *pw;
 #endif
 
-  g_return_val_if_fail(saveSession != NULL, FALSE);
-  g_return_val_if_fail(shutdownType != NULL, FALSE);
+  g_return_val_if_fail(save_session != NULL, FALSE);
+  g_return_val_if_fail(shutdown_type != NULL, FALSE);
 
   icon_theme = gtk_icon_theme_get_default ();
 
@@ -254,8 +279,8 @@ shutdownDialog(const gchar *sessionName, XfsmShutdownType *shutdownType, gboolea
   /* if PromptOnLogout is off, saving depends on AutoSave */
   if (!prompt)
     {
-      *shutdownType = XFSM_SHUTDOWN_LOGOUT;
-      *saveSession = autosave;
+      *shutdown_type = XFSM_SHUTDOWN_LOGOUT;
+      *save_session = autosave;
 
       return TRUE;
     }
@@ -395,7 +420,7 @@ shutdownDialog(const gchar *sessionName, XfsmShutdownType *shutdownType, gboolea
   gtk_box_pack_start (GTK_BOX (hbox), logout_button, TRUE, TRUE, 0);
 
   g_signal_connect (logout_button, "clicked",
-                    G_CALLBACK (logout_button_clicked), shutdownType);
+                    G_CALLBACK (logout_button_clicked), shutdown_type);
 
   vbox2 = gtk_vbox_new (FALSE, BORDER);
   gtk_container_set_border_width (GTK_CONTAINER (vbox2), BORDER);
@@ -429,7 +454,7 @@ shutdownDialog(const gchar *sessionName, XfsmShutdownType *shutdownType, gboolea
   gtk_box_pack_start (GTK_BOX (hbox), reboot_button, TRUE, TRUE, 0);
 
   g_signal_connect (reboot_button, "clicked",
-                    G_CALLBACK (reboot_button_clicked), shutdownType);
+                    G_CALLBACK (reboot_button_clicked), shutdown_type);
 
   vbox2 = gtk_vbox_new (FALSE, BORDER);
   gtk_container_set_border_width (GTK_CONTAINER (vbox2), BORDER);
@@ -471,7 +496,7 @@ shutdownDialog(const gchar *sessionName, XfsmShutdownType *shutdownType, gboolea
   gtk_box_pack_start (GTK_BOX (hbox), halt_button, TRUE, TRUE, 0);
 
   g_signal_connect (halt_button, "clicked",
-                    G_CALLBACK (halt_button_clicked), shutdownType);
+                    G_CALLBACK (halt_button_clicked), shutdown_type);
 
   vbox2 = gtk_vbox_new (FALSE, BORDER);
   gtk_container_set_border_width (GTK_CONTAINER (vbox2), BORDER);
@@ -533,7 +558,7 @@ shutdownDialog(const gchar *sessionName, XfsmShutdownType *shutdownType, gboolea
       gtk_box_pack_start (GTK_BOX (hbox), suspend_button, TRUE, TRUE, 0);
 
       g_signal_connect (suspend_button, "clicked",
-                        G_CALLBACK (suspend_button_clicked), shutdownType);
+                        G_CALLBACK (suspend_button_clicked), shutdown_type);
 
       vbox2 = gtk_vbox_new (FALSE, BORDER);
       gtk_container_set_border_width (GTK_CONTAINER (vbox2), BORDER);
@@ -571,7 +596,7 @@ shutdownDialog(const gchar *sessionName, XfsmShutdownType *shutdownType, gboolea
       gtk_box_pack_start (GTK_BOX (hbox), hibernate_button, TRUE, TRUE, 0);
 
       g_signal_connect (hibernate_button, "clicked",
-                        G_CALLBACK (hibernate_button_clicked), shutdownType);
+                        G_CALLBACK (hibernate_button_clicked), shutdown_type);
 
       vbox2 = gtk_vbox_new (FALSE, BORDER);
       gtk_container_set_border_width (GTK_CONTAINER (vbox2), BORDER);
@@ -643,7 +668,7 @@ shutdownDialog(const gchar *sessionName, XfsmShutdownType *shutdownType, gboolea
   result = gtk_dialog_run (GTK_DIALOG(dialog));
 
   if (result == GTK_RESPONSE_OK) {
-    *saveSession = autosave ? autosave :
+    *save_session = autosave ? autosave :
             gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbox));
   }
 
@@ -654,7 +679,7 @@ shutdownDialog(const gchar *sessionName, XfsmShutdownType *shutdownType, gboolea
                 NULL);
 
   /* ask password */
-  if (result == GTK_RESPONSE_OK && *shutdownType != XFSM_SHUTDOWN_LOGOUT
+  if (result == GTK_RESPONSE_OK && *shutdown_type != XFSM_SHUTDOWN_LOGOUT
       && require_password )
     {
       gtk_widget_show (ok_button);
@@ -760,8 +785,8 @@ shutdownDialog(const gchar *sessionName, XfsmShutdownType *shutdownType, gboolea
    */
   if (result == GTK_RESPONSE_OK)
     {
-      xfconf_channel_set_string (channel, "/general/SessionName", sessionName);
-      xfconf_channel_set_bool (channel, "/general/SaveOnExit", *saveSession);
+      xfconf_channel_set_string (channel, "/general/SessionName", session_name);
+      xfconf_channel_set_bool (channel, "/general/SaveOnExit", *save_session);
     }
   else
     {
@@ -773,7 +798,7 @@ shutdownDialog(const gchar *sessionName, XfsmShutdownType *shutdownType, gboolea
   if (screenshot_pm != NULL)
     {
       if (result == GTK_RESPONSE_OK)
-        screenshot_save (sessionName, screenshot_pm, &screenshot_area);
+        screenshot_save (session_name, screenshot_pm, &screenshot_area);
 
       g_object_unref (G_OBJECT (screenshot_pm));
     }
@@ -781,65 +806,3 @@ shutdownDialog(const gchar *sessionName, XfsmShutdownType *shutdownType, gboolea
 
   return (result == GTK_RESPONSE_OK);
 }
-
-
-/*
- */
-gint
-xfsm_shutdown(XfsmShutdownType type)
-{
-  gboolean result;
-  GError *error = NULL;
-
-  /* kludge */
-  if (type == XFSM_SHUTDOWN_ASK)
-    {
-      g_warning ("xfsm_shutdown () passed XFSM_SHUTDOWN_ASK.  This is a bug.");
-      type = XFSM_SHUTDOWN_LOGOUT;
-    }
-
-  /* these two remember if they were started or not */
-  xfsm_compat_gnome_shutdown ();
-  xfsm_compat_kde_shutdown ();
-
-  /* kill legacy clients */
-  xfsm_legacy_shutdown ();
-
-#if !defined(__NR_ioprio_set) && defined(HAVE_SYNC)
-  /* sync disk block in-core status with that on disk.  if
-   * we have ioprio_set (), then we've already synced. */
-  if (fork () == 0)
-    {
-# ifdef HAVE_SETSID
-      setsid ();
-# endif
-      sync ();
-      _exit (EXIT_SUCCESS);
-    }
-#endif  /* HAVE_SYNC */
-
-  if (type == XFSM_SHUTDOWN_LOGOUT)
-    return EXIT_SUCCESS;
-
-  if (shutdown_helper == NULL)
-    shutdown_helper = xfsm_shutdown_helper_new ();
-
-  result = xfsm_shutdown_helper_send_command (shutdown_helper, type, &error);
-  g_object_unref (shutdown_helper);
-  shutdown_helper = NULL;
-
-  if (!result)
-    {
-      xfce_message_dialog (NULL, _("Shutdown Failed"),
-                           GTK_STOCK_DIALOG_ERROR,
-                           _("Unable to perform shutdown"),
-                           error->message,
-                           GTK_STOCK_QUIT, GTK_RESPONSE_ACCEPT,
-                           NULL);
-      g_error_free (error);
-      return EXIT_FAILURE;
-    }
-
-  return EXIT_SUCCESS;
-}
-
diff --git a/xfce4-session/sm-layer.h b/xfce4-session/xfsm-logout-dialog.h
similarity index 69%
copy from xfce4-session/sm-layer.h
copy to xfce4-session/xfsm-logout-dialog.h
index 90cf96a..ed348b7 100644
--- a/xfce4-session/sm-layer.h
+++ b/xfce4-session/xfsm-logout-dialog.h
@@ -1,6 +1,6 @@
-/* $Id$ */
 /*-
  * Copyright (c) 2003-2004 Benedikt Meurer <benny at xfce.org>
+ * Copyright (c) 2011      Nick Schermer <nick at xfce.org>
  * All rights reserved.
  *
  * This program is free software; you can redistribute it and/or modify
@@ -19,16 +19,13 @@
  * MA 02110-1301 USA.
  */
 
-#ifndef __SM_LAYER_H__
-#define __SM_LAYER_H__
+#ifndef __XFSM_LOGOUT_DIALOG_H__
+#define __XFSM_LOGOUT_DIALOG_H__
 
-#include <xfconf/xfconf.h>
-#include <libxfce4util/libxfce4util.h>
+#include <xfce4-session/xfsm-global.h>
 
-#include "xfsm-manager.h"
+gboolean xfsm_logout_dialog (const gchar      *session_name,
+                             XfsmShutdownType *shutdown_type,
+                             gboolean         *save_session);
 
-void sm_init (XfconfChannel *channel,
-              gboolean       disable_tcp,
-              XfsmManager   *manager);
-
-#endif /* !__SM_LAYER_H__ */
+#endif
diff --git a/xfce4-session/xfsm-manager.c b/xfce4-session/xfsm-manager.c
index e1d05f0..9f87c48 100644
--- a/xfce4-session/xfsm-manager.c
+++ b/xfce4-session/xfsm-manager.c
@@ -71,20 +71,21 @@
 
 #include <libwnck/libwnck.h>
 
-#include "xfsm-shutdown-helper.h"
+#include <xfce4-session/xfsm-shutdown-helper.h>
 #include <libxfce4ui/libxfce4ui.h>
 
 #include <libxfsm/xfsm-splash-engine.h>
 #include <libxfsm/xfsm-util.h>
 
-#include "xfsm-manager.h"
-#include "chooser-icon.h"
-#include "xfsm-chooser.h"
-#include "xfsm-global.h"
-#include "xfsm-legacy.h"
-#include "xfsm-startup.h"
-#include "xfsm-marshal.h"
-#include "xfsm-error.h"
+#include <xfce4-session/xfsm-manager.h>
+#include <xfce4-session/xfsm-chooser-icon.h>
+#include <xfce4-session/xfsm-chooser.h>
+#include <xfce4-session/xfsm-global.h>
+#include <xfce4-session/xfsm-legacy.h>
+#include <xfce4-session/xfsm-startup.h>
+#include <xfce4-session/xfsm-marshal.h>
+#include <xfce4-session/xfsm-error.h>
+#include <xfce4-session/xfsm-logout-dialog.h>
 
 
 #define DEFAULT_SESSION_NAME "Default"
@@ -480,7 +481,7 @@ xfsm_manager_choose_session (XfsmManager *manager,
             {
               if (G_UNLIKELY (preview_default == NULL))
                 {
-                  preview_default = gdk_pixbuf_new_from_inline (-1, chooser_icon_data,
+                  preview_default = gdk_pixbuf_new_from_inline (-1, xfsm_chooser_icon_data,
                                                                 FALSE, NULL);
                 }
 
@@ -766,7 +767,7 @@ xfsm_manager_restart (XfsmManager *manager)
   /* tell splash screen that the session is starting now */
   preview = xfsm_load_session_preview (manager->session_name);
   if (preview == NULL)
-    preview = gdk_pixbuf_new_from_inline (-1, chooser_icon_data, FALSE, NULL);
+    preview = gdk_pixbuf_new_from_inline (-1, xfsm_chooser_icon_data, FALSE, NULL);
   steps = g_queue_get_length (manager->failsafe_mode ? manager->failsafe_clients : manager->pending_properties);
   xfsm_splash_screen_start (splash_screen, manager->session_name, preview, steps);
   g_object_unref (preview);
@@ -1093,7 +1094,7 @@ xfsm_manager_save_yourself_global (XfsmManager     *manager,
         {
           /* if we're not specifying fast shutdown, and we're ok with
            * prompting then ask the user what to do */
-          if (!shutdownDialog (manager->session_name, &manager->shutdown_type, &shutdown_save))
+          if (!xfsm_logout_dialog (manager->session_name, &manager->shutdown_type, &shutdown_save))
             return;
 
           /* |allow_shutdown_save| is ignored if we prompt the user.  i think
@@ -1813,7 +1814,7 @@ static gboolean xfsm_manager_dbus_shutdown (XfsmManager *manager,
 
 
 /* eader needs the above fwd decls */
-#include "xfsm-manager-dbus.h"
+#include <xfce4-session/xfsm-manager-dbus.h>
 
 
 static void
diff --git a/xfce4-session/xfsm-manager.h b/xfce4-session/xfsm-manager.h
index ba980d3..b12b143 100644
--- a/xfce4-session/xfsm-manager.h
+++ b/xfce4-session/xfsm-manager.h
@@ -28,8 +28,8 @@
 #include <xfconf/xfconf.h>
 #include <libxfce4util/libxfce4util.h>
 
-#include "xfsm-client.h"
-#include "shutdown.h"
+#include <xfce4-session/xfsm-client.h>
+#include <xfce4-session/xfsm-global.h>
 
 G_BEGIN_DECLS
 
diff --git a/xfce4-session/xfsm-shutdown-helper.c b/xfce4-session/xfsm-shutdown-helper.c
index 3debeb2..ef29f4f 100644
--- a/xfce4-session/xfsm-shutdown-helper.c
+++ b/xfce4-session/xfsm-shutdown-helper.c
@@ -71,8 +71,8 @@
 
 #include <libxfce4util/libxfce4util.h>
 
-#include "xfsm-shutdown-helper.h"
-#include "xfsm-global.h"
+#include <xfce4-session/xfsm-shutdown-helper.h>
+#include <xfce4-session/xfsm-global.h>
 
 static void xfsm_shutdown_helper_finalize     (GObject *object);
 
diff --git a/xfce4-session/xfsm-shutdown-helper.h b/xfce4-session/xfsm-shutdown-helper.h
index 20e1076..4bacbe8 100644
--- a/xfce4-session/xfsm-shutdown-helper.h
+++ b/xfce4-session/xfsm-shutdown-helper.h
@@ -24,8 +24,7 @@
 #define __XFSM_SHUTDOWN_HELPER_H
 
 #include <glib-object.h>
-
-#include "shutdown.h"
+#include <xfce4-session/xfsm-global.h>
 
 G_BEGIN_DECLS
 
diff --git a/xfce4-session/xfsm-shutdown.c b/xfce4-session/xfsm-shutdown.c
new file mode 100644
index 0000000..9246c01
--- /dev/null
+++ b/xfce4-session/xfsm-shutdown.c
@@ -0,0 +1,107 @@
+/* $Id$ */
+/*-
+ * Copyright (c) 2003-2004 Benedikt Meurer <benny at xfce.org>
+ * All rights reserved.
+ *
+ * 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, 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.
+ *
+ * Parts of this file where taken from gnome-session/logout.c, which
+ * was written by Owen Taylor <otaylor at redhat.com>.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_SYS_WAIT_H
+#include <sys/wait.h>
+#endif
+
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#include <libxfce4util/libxfce4util.h>
+#include <gtk/gtk.h>
+
+#include <libxfsm/xfsm-util.h>
+
+#include <xfce4-session/xfsm-shutdown.h>
+#include <xfce4-session/xfsm-compat-gnome.h>
+#include <xfce4-session/xfsm-compat-kde.h>
+#include <xfce4-session/xfsm-fadeout.h>
+#include <xfce4-session/xfsm-global.h>
+#include <xfce4-session/xfsm-legacy.h>
+#include <xfce4-session/xfsm-shutdown-helper.h>
+
+gint
+xfsm_shutdown(XfsmShutdownType type)
+{
+  gboolean            result;
+  GError             *error = NULL;
+  XfsmShutdownHelper *shutdown_helper;
+
+  /* kludge */
+  if (type == XFSM_SHUTDOWN_ASK)
+    {
+      g_warning ("xfsm_shutdown () passed XFSM_SHUTDOWN_ASK.  This is a bug.");
+      type = XFSM_SHUTDOWN_LOGOUT;
+    }
+
+  /* these two remember if they were started or not */
+  xfsm_compat_gnome_shutdown ();
+  xfsm_compat_kde_shutdown ();
+
+  /* kill legacy clients */
+  xfsm_legacy_shutdown ();
+
+#if !defined(__NR_ioprio_set) && defined(HAVE_SYNC)
+  /* sync disk block in-core status with that on disk.  if
+   * we have ioprio_set (), then we've already synced. */
+  if (fork () == 0)
+    {
+# ifdef HAVE_SETSID
+      setsid ();
+# endif
+      sync ();
+      _exit (EXIT_SUCCESS);
+    }
+#endif  /* HAVE_SYNC */
+
+  if (type == XFSM_SHUTDOWN_LOGOUT)
+    return EXIT_SUCCESS;
+
+  shutdown_helper = xfsm_shutdown_helper_new ();
+  result = xfsm_shutdown_helper_send_command (shutdown_helper, type, &error);
+  g_object_unref (shutdown_helper);
+
+  if (!result)
+    {
+      xfce_message_dialog (NULL, _("Shutdown Failed"),
+                           GTK_STOCK_DIALOG_ERROR,
+                           _("Unable to perform shutdown"),
+                           error->message,
+                           GTK_STOCK_QUIT, GTK_RESPONSE_ACCEPT,
+                           NULL);
+      g_error_free (error);
+      return EXIT_FAILURE;
+    }
+
+  return EXIT_SUCCESS;
+}
diff --git a/xfce4-session/shutdown.h b/xfce4-session/xfsm-shutdown.h
similarity index 79%
rename from xfce4-session/shutdown.h
rename to xfce4-session/xfsm-shutdown.h
index 65ac453..76d7145 100644
--- a/xfce4-session/shutdown.h
+++ b/xfce4-session/xfsm-shutdown.h
@@ -1,4 +1,3 @@
-/* $Id$ */
 /*-
  * Copyright (c) 2003-2004 Benedikt Meurer <benny at xfce.org>
  * All rights reserved.
@@ -22,14 +21,7 @@
 #ifndef __XFSM_SHUTDOWN_H__
 #define __XFSM_SHUTDOWN_H__
 
-#include <glib.h>
-
-#include "xfsm-global.h"
-
-/* prototypes */
-gboolean     shutdownDialog   (const gchar *sessionName,
-                               XfsmShutdownType *shutdownType,
-                               gboolean *saveSession);
+#include <xfce4-session/xfsm-global.h>
 
 gint	     xfsm_shutdown    (XfsmShutdownType type);
 
diff --git a/xfce4-session/xfsm-startup.c b/xfce4-session/xfsm-startup.c
index c41fd39..3c08a78 100644
--- a/xfce4-session/xfsm-startup.c
+++ b/xfce4-session/xfsm-startup.c
@@ -56,7 +56,7 @@
 #include <xfce4-session/xfsm-manager.h>
 #include <xfce4-session/xfsm-splash-screen.h>
 
-#include "xfsm-startup.h"
+#include <xfce4-session/xfsm-startup.h>
 
 
 typedef struct


More information about the Xfce4-commits mailing list