[Goodies-commits] r7187 - in xfce4-power-manager/trunk: . src

Ali Abdallah aliov at xfce.org
Mon Apr 13 21:49:46 CEST 2009


Author: aliov
Date: 2009-04-13 19:49:46 +0000 (Mon, 13 Apr 2009)
New Revision: 7187

Modified:
   xfce4-power-manager/trunk/ChangeLog
   xfce4-power-manager/trunk/src/xfpm-main.c
   xfce4-power-manager/trunk/src/xfpm-manager.c
   xfce4-power-manager/trunk/src/xfpm-manager.h
   xfce4-power-manager/trunk/src/xfpm-session.c
Log:
Register to some posix signals+put the restart style to never when we exit the power manager

Modified: xfce4-power-manager/trunk/ChangeLog
===================================================================
--- xfce4-power-manager/trunk/ChangeLog	2009-04-13 19:49:19 UTC (rev 7186)
+++ xfce4-power-manager/trunk/ChangeLog	2009-04-13 19:49:46 UTC (rev 7187)
@@ -1,4 +1,7 @@
 
+2009-04-13 21:49 Ali aliov at xfce.org 
+	 * : Register to some posix signals+put the restart style to never when we exit the power manager
+
 2009-04-13 21:23 Ali aliov at xfce.org 
 	 * : Fix icon refreshing, it should fix bug 5221
 

Modified: xfce4-power-manager/trunk/src/xfpm-main.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-main.c	2009-04-13 19:49:19 UTC (rev 7186)
+++ xfce4-power-manager/trunk/src/xfpm-main.c	2009-04-13 19:49:46 UTC (rev 7187)
@@ -57,25 +57,55 @@
 }
 
 static void
+xfpm_quit_signal (gint sig, gpointer data)
+{
+    XfpmManager *manager = (XfpmManager *) data;
+    
+    xfpm_manager_stop (manager);
+}
+
+static void
 xfpm_start (DBusGConnection *bus)
 {
     TRACE("Starting the power manager\n");
+    GError *error = NULL;
     XfpmSession *session;
     session = xfpm_session_new ();
     
     if ( client_id != NULL )
 	xfpm_session_set_client_id (session, client_id);
     
+    XfpmManager *manager;
+    manager = xfpm_manager_new (bus);
+    
+     if ( xfce_posix_signal_handler_init (&error)) 
+     {
+        xfce_posix_signal_handler_set_handler(SIGHUP,
+                                              xfpm_quit_signal,
+                                              manager, NULL);
+
+        xfce_posix_signal_handler_set_handler(SIGINT,
+                                              xfpm_quit_signal,
+					      manager, NULL);
+
+        xfce_posix_signal_handler_set_handler(SIGTERM,
+                                              xfpm_quit_signal,
+                                              manager, NULL);
+    } 
+    else 
+    {
+        g_warning("Unable to set up POSIX signal handlers: %s", error->message);
+        g_error_free(error);
+    }
+
     if ( no_daemon == FALSE && daemon(0,0) )
     {
 	g_critical ("Could not daemonize");
     }
+ 
+    xfpm_manager_start (manager);
+    gtk_main ();
     
-    XfpmManager *manager;
-    manager = xfpm_manager_new(bus);
-    xfpm_manager_start(manager);
-    gtk_main();
-    
     g_object_unref (session);
 }
 

Modified: xfce4-power-manager/trunk/src/xfpm-manager.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-manager.c	2009-04-13 19:49:19 UTC (rev 7186)
+++ xfce4-power-manager/trunk/src/xfpm-manager.c	2009-04-13 19:49:46 UTC (rev 7187)
@@ -221,6 +221,13 @@
 	;
 }
 
+void xfpm_manager_stop (XfpmManager *manager)
+{
+    
+    g_return_if_fail (XFPM_IS_MANAGER (manager));
+    xfpm_manager_quit (manager);
+}
+
 /*
  * 
  * DBus server implementation

Modified: xfce4-power-manager/trunk/src/xfpm-manager.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-manager.h	2009-04-13 19:49:19 UTC (rev 7186)
+++ xfce4-power-manager/trunk/src/xfpm-manager.h	2009-04-13 19:49:46 UTC (rev 7187)
@@ -42,14 +42,18 @@
 
 typedef struct
 {
-    GObjectClass parent_class;
+    GObjectClass 	  parent_class;
     
 } XfpmManagerClass;
 
-GType        	xfpm_manager_get_type        (void) G_GNUC_CONST;
-XfpmManager    *xfpm_manager_new             (DBusGConnection *bus);
-void            xfpm_manager_start           (XfpmManager *manager);
+GType        		  xfpm_manager_get_type        (void) G_GNUC_CONST;
 
+XfpmManager    		 *xfpm_manager_new             (DBusGConnection *bus);
+
+void            	  xfpm_manager_start           (XfpmManager *manager);
+
+void                      xfpm_manager_stop            (XfpmManager *manager);
+
 G_END_DECLS
 
 #endif /* __XFPM_MANAGER_H */

Modified: xfce4-power-manager/trunk/src/xfpm-session.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-session.c	2009-04-13 19:49:19 UTC (rev 7186)
+++ xfce4-power-manager/trunk/src/xfpm-session.c	2009-04-13 19:49:46 UTC (rev 7187)
@@ -126,7 +126,7 @@
     restart_command[2] = NULL;
     
     session->priv->client = client_session_new_full (NULL,
-						     SESSION_RESTART_IMMEDIATELY,
+						     SESSION_RESTART_IF_RUNNING,
 						     40,
 						     NULL,
 						     (gchar *) PACKAGE_NAME,
@@ -152,9 +152,14 @@
     XfpmSession *session;
 
     session = XFPM_SESSION (object);
+
+    if ( session->priv->client != NULL )
+    {
+	if ( session->priv->managed )
+	    logout_session (session->priv->client);
     
-    if ( session->priv->client != NULL )
 	client_session_free (session->priv->client);
+    }
 
     G_OBJECT_CLASS (xfpm_session_parent_class)->finalize (object);
 }
@@ -226,7 +231,7 @@
 {
     g_return_if_fail (XFPM_IS_SESSION (session));
     
-    client_session_set_restart_style (session->priv->client, SESSION_RESTART_IF_RUNNING);
+    client_session_set_restart_style (session->priv->client, SESSION_RESTART_NEVER);
 }
 
 gboolean xfpm_session_shutdown (XfpmSession *session)




More information about the Goodies-commits mailing list