gnome-session r4777 - in trunk: . gnome-session



Author: lucasr
Date: Wed Jun 25 18:03:50 2008
New Revision: 4777
URL: http://svn.gnome.org/viewvc/gnome-session?rev=4777&view=rev

Log:
2008-06-25  Lucas Rocha  <lucasr gnome org>

	Provide a CanShutdown D-Bus method so that other apps (such as
	gnome-panel) are able to query session manager if it's a Shutdown
	D-Bus call is possible. #536915, Vincent Untz.

	* gnome-session/org.gnome.SessionManagement.xml, gnome-session/dbus.c
	(gsm_dbus_server_can_shutdown): added CanShutdown method to session
	manager D-Bus API.
	* gnome-session/logout.[ch] (gsm_logout_can_shutdown,
	gsm_logout_can_reboot): renamed logout-dialog.[ch] to logout.[ch] for
	consistency (and updated related files accordingly).
	Made gsm_logout_can_shutdown() and gsm_logout_can_reboot() public
	methods.


Added:
   trunk/gnome-session/logout.c
      - copied, changed from r4768, /trunk/gnome-session/logout-dialog.c
   trunk/gnome-session/logout.h
      - copied, changed from r4768, /trunk/gnome-session/logout-dialog.h
Removed:
   trunk/gnome-session/logout-dialog.c
   trunk/gnome-session/logout-dialog.h
Modified:
   trunk/ChangeLog
   trunk/gnome-session/Makefile.am
   trunk/gnome-session/dbus.c
   trunk/gnome-session/org.gnome.SessionManagement.xml
   trunk/gnome-session/session.c

Modified: trunk/gnome-session/Makefile.am
==============================================================================
--- trunk/gnome-session/Makefile.am	(original)
+++ trunk/gnome-session/Makefile.am	Wed Jun 25 18:03:50 2008
@@ -45,8 +45,8 @@
 	gdm.h					\
 	gdm.c					\
 	gsm.h					\
-	logout-dialog.h				\
-	logout-dialog.c				\
+	logout.h				\
+	logout.c				\
 	main.c					\
 	power-manager.h				\
 	power-manager.c				\

Modified: trunk/gnome-session/dbus.c
==============================================================================
--- trunk/gnome-session/dbus.c	(original)
+++ trunk/gnome-session/dbus.c	Wed Jun 25 18:03:50 2008
@@ -34,7 +34,7 @@
 
 #include "dbus.h"
 #include "gsm.h"
-#include "dbus.h"
+#include "logout.h"
 
 enum {
   SESSION_RUNNING,
@@ -164,6 +164,10 @@
                                           const char     *session_name,
 					  GError        **error);
 
+static gboolean gsm_dbus_server_can_shutdown (GsmDBusServer  *dbus,
+                                              gboolean       *can_shutdown,
+					      GError        **error);
+
 #include "dbus-glue.h"
 
 G_DEFINE_TYPE (GsmDBusServer, gsm_dbus_server, G_TYPE_OBJECT)
@@ -323,6 +327,23 @@
   return TRUE;
 }
 
+static gboolean
+gsm_dbus_server_can_shutdown (GsmDBusServer  *dbus,
+                              gboolean       *can_shutdown,
+			      GError        **error)
+{
+  if (gsm_session_get_phase (global_session) != GSM_SESSION_PHASE_RUNNING)
+    {
+      *can_shutdown = FALSE;
+    }
+  else 
+    {
+      *can_shutdown = gsm_logout_can_shutdown ();
+    }
+
+  return TRUE;
+}
+
 static GsmDBusServer *global_dbus_server;
 
 void

Copied: trunk/gnome-session/logout.c (from r4768, /trunk/gnome-session/logout-dialog.c)
==============================================================================
--- /trunk/gnome-session/logout-dialog.c	(original)
+++ trunk/gnome-session/logout.c	Wed Jun 25 18:03:50 2008
@@ -31,7 +31,7 @@
 
 #include "gsm.h"
 #include "session.h"
-#include "logout-dialog.h"
+#include "logout.h"
 #include "power-manager.h"
 #include "consolekit.h"
 #include "gdm.h"
@@ -198,35 +198,6 @@
   current_dialog = NULL;
 }
 
-static gboolean
-gsm_logout_supports_reboot (GsmLogoutDialog *logout_dialog)
-{
-  gboolean ret;
-
-  ret = gsm_consolekit_can_restart (logout_dialog->priv->consolekit);
-  if (!ret) 
-    {
-      ret = gdm_supports_logout_action (GDM_LOGOUT_ACTION_REBOOT);
-    }
-
-  return ret;
-}
-
-static gboolean
-gsm_logout_supports_shutdown (GsmLogoutDialog *logout_dialog)
-{
-  gboolean ret;
-
-  ret = gsm_consolekit_can_stop (logout_dialog->priv->consolekit);
-
-  if (!ret) 
-    {
-      ret = gdm_supports_logout_action (GDM_LOGOUT_ACTION_SHUTDOWN);
-    }
-
-  return ret;
-}
-
 static void
 gsm_logout_dialog_show (GsmLogoutDialog *logout_dialog, gpointer user_data)
 {
@@ -326,7 +297,7 @@
 }
 
 GtkWidget *
-gsm_get_logout_dialog (GsmSessionLogoutType  type,
+gsm_logout_get_dialog (GsmSessionLogoutType  type,
                        GdkScreen            *screen,
                        guint32               activate_time)
 {
@@ -388,7 +359,7 @@
                                _("_Hibernate"),
                                GSM_LOGOUT_RESPONSE_STD);
       
-      if (gsm_logout_supports_reboot (logout_dialog))
+      if (gsm_logout_can_reboot ())
         gtk_dialog_add_button (GTK_DIALOG (logout_dialog),
                                _("_Restart"),
                                GSM_LOGOUT_RESPONSE_REBOOT);
@@ -397,7 +368,7 @@
                              GTK_STOCK_CANCEL,
                              GTK_RESPONSE_CANCEL);
   
-      if (gsm_logout_supports_shutdown (logout_dialog))
+      if (gsm_logout_can_shutdown ())
         gtk_dialog_add_button (GTK_DIALOG (logout_dialog),
                                _("_Shut Down"),
                                GSM_LOGOUT_RESPONSE_SHUTDOWN);
@@ -419,3 +390,44 @@
 
   return GTK_WIDGET (logout_dialog);
 }
+
+gboolean
+gsm_logout_can_reboot ()
+{
+  GsmConsolekit *consolekit;
+  gboolean ret;
+
+  consolekit = gsm_get_consolekit ();
+
+  ret = gsm_consolekit_can_restart (consolekit);
+
+  if (!ret) 
+    {
+      ret = gdm_supports_logout_action (GDM_LOGOUT_ACTION_REBOOT);
+    }
+
+  g_object_unref (consolekit);
+
+  return ret;
+}
+
+gboolean
+gsm_logout_can_shutdown ()
+{
+  GsmConsolekit *consolekit;
+  gboolean ret;
+
+  consolekit = gsm_get_consolekit ();
+
+  ret = gsm_consolekit_can_stop (consolekit);
+
+  if (!ret) 
+    {
+      ret = gdm_supports_logout_action (GDM_LOGOUT_ACTION_SHUTDOWN);
+    }
+
+  g_object_unref (consolekit);
+
+  return ret;
+}
+

Copied: trunk/gnome-session/logout.h (from r4768, /trunk/gnome-session/logout-dialog.h)
==============================================================================
--- /trunk/gnome-session/logout-dialog.h	(original)
+++ trunk/gnome-session/logout.h	Wed Jun 25 18:03:50 2008
@@ -20,8 +20,8 @@
  *	Vincent Untz <vuntz gnome org>
  */
 
-#ifndef __GSM_LOGOUT_DIALOG_H__
-#define __GSM_LOGOUT_DIALOG_H__
+#ifndef __GSM_LOGOUT_H__
+#define __GSM_LOGOUT_H__
 
 #include <gtk/gtk.h>
 
@@ -62,10 +62,14 @@
 
 GType        gsm_logout_dialog_get_type   (void) G_GNUC_CONST;	
 
-GtkWidget   *gsm_get_logout_dialog        (GsmSessionLogoutType  type,
+GtkWidget   *gsm_logout_get_dialog        (GsmSessionLogoutType  type,
 		                           GdkScreen            *screen,
 		                           guint32               activate_time);
 
+gboolean     gsm_logout_can_shutdown      (void);
+
+gboolean     gsm_logout_can_reboot        (void);
+
 G_END_DECLS
 
-#endif /* __GSM_LOGOUT_DIALOG_H__ */
+#endif /* __GSM_LOGOUT_H__ */

Modified: trunk/gnome-session/org.gnome.SessionManagement.xml
==============================================================================
--- trunk/gnome-session/org.gnome.SessionManagement.xml	(original)
+++ trunk/gnome-session/org.gnome.SessionManagement.xml	Wed Jun 25 18:03:50 2008
@@ -27,6 +27,10 @@
       <arg name="name" type="s" direction="in"/>
     </method>
 
+    <method name="CanShutdown">
+      <arg name="can_shutdown" type="b" direction="out"/>
+    </method>
+
     <!-- Signals -->
 
     <signal name="SessionRunning">

Modified: trunk/gnome-session/session.c
==============================================================================
--- trunk/gnome-session/session.c	(original)
+++ trunk/gnome-session/session.c	Wed Jun 25 18:03:50 2008
@@ -24,7 +24,7 @@
 
 #include "app-autostart.h"
 #include "app-resumed.h"
-#include "logout-dialog.h"
+#include "logout.h"
 #include "consolekit.h"
 #include "power-manager.h"
 #include "gdm.h"
@@ -759,7 +759,7 @@
     {
       GtkWidget *logout_dialog;
 
-      logout_dialog = gsm_get_logout_dialog (logout_type,
+      logout_dialog = gsm_logout_get_dialog (logout_type,
                                              gdk_screen_get_default (),
                                              gtk_get_current_event_time ());
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]