[gnome-panel/wip/gnome-3.10+] session-manager: add function to request reboot



commit e751091753c85493f9d11e3015d1ca15e39c0949
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date:   Thu Oct 23 00:04:10 2014 +0300

    session-manager: add function to request reboot

 gnome-panel/libpanel-util/panel-session-manager.c |   40 +++++++++++++++++++++
 gnome-panel/libpanel-util/panel-session-manager.h |    1 +
 2 files changed, 41 insertions(+), 0 deletions(-)
---
diff --git a/gnome-panel/libpanel-util/panel-session-manager.c 
b/gnome-panel/libpanel-util/panel-session-manager.c
index bd12a82..9ca5077 100644
--- a/gnome-panel/libpanel-util/panel-session-manager.c
+++ b/gnome-panel/libpanel-util/panel-session-manager.c
@@ -270,6 +270,46 @@ panel_session_manager_request_shutdown (PanelSessionManager *manager)
                           manager);
 }
 
+static void
+reboot_ready_callback (GObject      *source_object,
+                       GAsyncResult *res,
+                       gpointer      user_data)
+{
+       PanelSessionManager *manager = (PanelSessionManager *) user_data;
+       GError *error = NULL;
+       GVariant *ret;
+
+       ret = g_dbus_proxy_call_finish (manager->priv->session_proxy, res, &error);
+       if (ret) {
+               g_variant_unref (ret);
+       }
+
+       if (error) {
+               g_warning ("Could not ask session manager to reboot: %s", error->message);
+               g_error_free (error);
+       }
+}
+
+void
+panel_session_manager_request_reboot (PanelSessionManager *manager)
+{
+       g_return_if_fail (PANEL_IS_SESSION_MANAGER (manager));
+
+       if (!manager->priv->session_proxy) {
+               g_warning ("Session manager service not available.");
+               return;
+       }
+
+       g_dbus_proxy_call (manager->priv->session_proxy,
+                          "Reboot",
+                          NULL,
+                          G_DBUS_CALL_FLAGS_NONE,
+                          -1,
+                          NULL,
+                          (GAsyncReadyCallback) reboot_ready_callback,
+                          manager);
+}
+
 gboolean
 panel_session_manager_is_shutdown_available (PanelSessionManager *manager)
 {
diff --git a/gnome-panel/libpanel-util/panel-session-manager.h 
b/gnome-panel/libpanel-util/panel-session-manager.h
index caf5a29..3cd4bb3 100644
--- a/gnome-panel/libpanel-util/panel-session-manager.h
+++ b/gnome-panel/libpanel-util/panel-session-manager.h
@@ -79,6 +79,7 @@ PanelSessionManagerPresenceType panel_session_manager_get_presence (PanelSession
 void panel_session_manager_request_logout   (PanelSessionManager           *session,
                                             PanelSessionManagerLogoutType  mode);
 void panel_session_manager_request_shutdown (PanelSessionManager *session);
+void panel_session_manager_request_reboot   (PanelSessionManager *session);
 
 gboolean panel_session_manager_is_shutdown_available (PanelSessionManager *session);
 


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