[Goodies-commits] r7130 - in xfce4-power-manager/trunk: . panel-plugins/brightness src

Ali Abdallah aliov at xfce.org
Tue Apr 7 13:23:28 CEST 2009


Author: aliov
Date: 2009-04-07 11:23:27 +0000 (Tue, 07 Apr 2009)
New Revision: 7130

Modified:
   xfce4-power-manager/trunk/ChangeLog
   xfce4-power-manager/trunk/panel-plugins/brightness/brightness-button.c
   xfce4-power-manager/trunk/src/xfpm-adapter.c
   xfce4-power-manager/trunk/src/xfpm-adapter.h
   xfce4-power-manager/trunk/src/xfpm-backlight.c
   xfce4-power-manager/trunk/src/xfpm-backlight.h
   xfce4-power-manager/trunk/src/xfpm-cpu.c
   xfce4-power-manager/trunk/src/xfpm-cpu.h
   xfce4-power-manager/trunk/src/xfpm-engine.c
   xfce4-power-manager/trunk/src/xfpm-engine.h
   xfce4-power-manager/trunk/src/xfpm-lid-hal.c
   xfce4-power-manager/trunk/src/xfpm-lid-hal.h
   xfce4-power-manager/trunk/src/xfpm-manager.c
   xfce4-power-manager/trunk/src/xfpm-shutdown.c
   xfce4-power-manager/trunk/src/xfpm-shutdown.h
   xfce4-power-manager/trunk/src/xfpm-supply.c
   xfce4-power-manager/trunk/src/xfpm-supply.h
Log:
Implement a clean way to restart HAL related objects when HALD restarts

Modified: xfce4-power-manager/trunk/ChangeLog
===================================================================
--- xfce4-power-manager/trunk/ChangeLog	2009-04-07 09:16:47 UTC (rev 7129)
+++ xfce4-power-manager/trunk/ChangeLog	2009-04-07 11:23:27 UTC (rev 7130)
@@ -1,4 +1,7 @@
 
+2009-04-07 13:23 Ali aliov at xfce.org 
+	 * : Implement a clean way to restart HAL related objects when HALD restarts
+
 2009-04-07 11:16 Ali aliov at xfce.org 
 	 * : Updates on the brightness plugin to act like a menu so it will close the popup when it doesn't have input focus
 

Modified: xfce4-power-manager/trunk/panel-plugins/brightness/brightness-button.c
===================================================================
--- xfce4-power-manager/trunk/panel-plugins/brightness/brightness-button.c	2009-04-07 09:16:47 UTC (rev 7129)
+++ xfce4-power-manager/trunk/panel-plugins/brightness/brightness-button.c	2009-04-07 11:23:27 UTC (rev 7130)
@@ -82,6 +82,14 @@
     }
 }
 
+/*
+ * The Code for handling grab/ungrab events are taken from GtkScaleButton.
+ * GTK - The GIMP Toolkit
+ * Copyright (C) 2005 Ronald S. Bultje
+ * Copyright (C) 2006, 2007 Christian Persch
+ * Copyright (C) 2006 Jan Arne Petersen
+ * Copyright (C) 2005-2007 Red Hat, Inc.
+ */
 static void
 brightness_button_grab_notify (BrightnessButton *button, gboolean was_grabbed)
 {

Modified: xfce4-power-manager/trunk/src/xfpm-adapter.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-adapter.c	2009-04-07 09:16:47 UTC (rev 7129)
+++ xfce4-power-manager/trunk/src/xfpm-adapter.c	2009-04-07 11:23:27 UTC (rev 7130)
@@ -202,3 +202,16 @@
     
     return adapter->priv->hw_found;
 }
+
+void xfpm_adapter_reload (XfpmAdapter *adapter)
+{
+    HalManager *manager;
+    
+    g_return_if_fail (XFPM_IS_ADAPTER (adapter));
+    
+    g_object_unref (adapter->priv->device);
+    
+    manager = hal_manager_new ();
+    xfpm_adapter_set_device (adapter, manager);
+    g_object_unref (manager);
+}

Modified: xfce4-power-manager/trunk/src/xfpm-adapter.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-adapter.h	2009-04-07 09:16:47 UTC (rev 7129)
+++ xfce4-power-manager/trunk/src/xfpm-adapter.h	2009-04-07 11:23:27 UTC (rev 7130)
@@ -54,6 +54,8 @@
 
 gboolean 		 xfpm_adapter_has_hw 	      (XfpmAdapter *adapter) G_GNUC_PURE;
 
+void                     xfpm_adapter_reload          (XfpmAdapter *adapter);
+
 G_END_DECLS
 
 #endif /* __XFPM_ADAPTER_H */

Modified: xfce4-power-manager/trunk/src/xfpm-backlight.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-backlight.c	2009-04-07 09:16:47 UTC (rev 7129)
+++ xfce4-power-manager/trunk/src/xfpm-backlight.c	2009-04-07 11:23:27 UTC (rev 7130)
@@ -66,24 +66,9 @@
 }
 
 static void
-xfpm_backlight_class_init(XfpmBacklightClass *klass)
+xfpm_backlight_get_device (XfpmBacklight *bk)
 {
-    GObjectClass *object_class = G_OBJECT_CLASS(klass);
-
-    object_class->finalize = xfpm_backlight_finalize;
-
-    g_type_class_add_private(klass,sizeof(XfpmBacklightPrivate));
-    
-    xfpm_backlight_dbus_class_init (klass);
-}
-
-static void
-xfpm_backlight_init(XfpmBacklight *bk)
-{
     guint max_level;
-    
-    bk->priv = XFPM_BACKLIGHT_GET_PRIVATE(bk);
-    
     bk->priv->br     = xfpm_brightness_hal_new ();
     bk->priv->has_hw = xfpm_brightness_hal_has_hw (bk->priv->br);
     
@@ -103,6 +88,27 @@
 					      max_level -1 );
     }
     
+}
+
+static void
+xfpm_backlight_class_init(XfpmBacklightClass *klass)
+{
+    GObjectClass *object_class = G_OBJECT_CLASS(klass);
+
+    object_class->finalize = xfpm_backlight_finalize;
+
+    g_type_class_add_private(klass,sizeof(XfpmBacklightPrivate));
+    
+    xfpm_backlight_dbus_class_init (klass);
+}
+
+static void
+xfpm_backlight_init(XfpmBacklight *bk)
+{
+    bk->priv = XFPM_BACKLIGHT_GET_PRIVATE(bk);
+    
+    xfpm_backlight_get_device (bk);
+    
     xfpm_backlight_dbus_init (bk);
 }
 
@@ -175,3 +181,16 @@
     
     return bk->priv->has_hw;
 }
+
+void xfpm_backlight_reload (XfpmBacklight *bk)
+{
+    g_return_if_fail (XFPM_IS_BACKLIGHT (bk));
+    
+    if ( bk->priv->has_hw == TRUE )
+    {
+	g_object_unref (bk->priv->br);
+	g_object_unref (bk->priv->widget);
+    }
+    
+    xfpm_backlight_get_device (bk);
+}

Modified: xfce4-power-manager/trunk/src/xfpm-backlight.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-backlight.h	2009-04-07 09:16:47 UTC (rev 7129)
+++ xfce4-power-manager/trunk/src/xfpm-backlight.h	2009-04-07 11:23:27 UTC (rev 7130)
@@ -49,6 +49,8 @@
 
 gboolean                         xfpm_backlight_has_hw          (XfpmBacklight *bk) G_GNUC_PURE;
 
+void                             xfpm_backlight_reload          (XfpmBacklight *bk);
+
 G_END_DECLS
 
 #endif /* __XFPM_BACKLIGHT_H */

Modified: xfce4-power-manager/trunk/src/xfpm-cpu.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-cpu.c	2009-04-07 09:16:47 UTC (rev 7129)
+++ xfce4-power-manager/trunk/src/xfpm-cpu.c	2009-04-07 11:23:27 UTC (rev 7130)
@@ -259,7 +259,6 @@
 	else if ( xfpm_strequal(governors[i], "performance") )
 	    cpu->priv->cpu_governors |= CPU_PERFORMANCE;
     }
-    
     hal_manager_free_string_array (governors);
 }
 
@@ -393,3 +392,11 @@
     cpu = g_object_new (XFPM_TYPE_CPU, NULL);
     return cpu;
 }
+
+void xfpm_cpu_reload (XfpmCpu *cpu)
+{
+    g_return_if_fail (XFPM_IS_CPU (cpu));
+    
+    cpu->priv->cpu_governors = 0;
+    xfpm_cpu_check_iface (cpu);
+}

Modified: xfce4-power-manager/trunk/src/xfpm-cpu.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-cpu.h	2009-04-07 09:16:47 UTC (rev 7129)
+++ xfce4-power-manager/trunk/src/xfpm-cpu.h	2009-04-07 11:23:27 UTC (rev 7130)
@@ -46,6 +46,7 @@
 
 GType          xfpm_cpu_get_type        (void) G_GNUC_CONST;
 XfpmCpu       *xfpm_cpu_new             (void);
+void           xfpm_cpu_reload          (XfpmCpu *cpu);
 
 G_END_DECLS
 

Modified: xfce4-power-manager/trunk/src/xfpm-engine.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-engine.c	2009-04-07 09:16:47 UTC (rev 7129)
+++ xfce4-power-manager/trunk/src/xfpm-engine.c	2009-04-07 11:23:27 UTC (rev 7130)
@@ -472,6 +472,25 @@
     *has_lid = engine->priv->has_lid;
 }
 
+void xfpm_engine_reload_hal_objects (XfpmEngine *engine)
+{
+    g_return_if_fail (XFPM_IS_ENGINE (engine));
+    
+    xfpm_adapter_reload (engine->priv->adapter);
+    xfpm_supply_reload  (engine->priv->supply);
+    
+    
+    xfpm_shutdown_reload (engine->priv->shutdown);
+    
+    if ( engine->priv->is_laptop )
+    {
+	xfpm_backlight_reload (engine->priv->bk);
+	xfpm_cpu_reload       (engine->priv->cpu);
+	xfpm_lid_hal_reload   (engine->priv->lid);
+    }
+    
+}
+
 /*
  * 
  * DBus server implementation for org.freedesktop.PowerManagement

Modified: xfce4-power-manager/trunk/src/xfpm-engine.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-engine.h	2009-04-07 09:16:47 UTC (rev 7129)
+++ xfce4-power-manager/trunk/src/xfpm-engine.h	2009-04-07 11:23:27 UTC (rev 7130)
@@ -42,21 +42,23 @@
 {
     GObjectClass 	  parent_class;
     
-    void                  (*on_battery_changed)       (XfpmEngine *engine,
-						       gboolean    on_battery);
+    void                  (*on_battery_changed)       	(XfpmEngine *engine,
+							 gboolean    on_battery);
     
 } XfpmEngineClass;
 
-GType        	  	  xfpm_engine_get_type        (void) G_GNUC_CONST;
-XfpmEngine       	 *xfpm_engine_new             (void);
+GType        	  	  xfpm_engine_get_type        	(void) G_GNUC_CONST;
+XfpmEngine       	 *xfpm_engine_new             	(void);
 
-void              	  xfpm_engine_get_info        (XfpmEngine *engine,
-						       gboolean *system_laptop,
-						       gboolean *user_privilege,
-						       gboolean *can_suspend,
-						       gboolean *can_hibernate,
-						       gboolean *has_lcd_brightness,
-						       gboolean *has_lid);
+void              	  xfpm_engine_get_info        	(XfpmEngine *engine,
+							 gboolean *system_laptop,
+						         gboolean *user_privilege,
+							 gboolean *can_suspend,
+							 gboolean *can_hibernate,
+							 gboolean *has_lcd_brightness,
+							 gboolean *has_lid);
+						       
+void                     xfpm_engine_reload_hal_objects (XfpmEngine *engine);
 G_END_DECLS
 
 #endif /* __XFPM_ENGINE_H */

Modified: xfce4-power-manager/trunk/src/xfpm-lid-hal.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-lid-hal.c	2009-04-07 09:16:47 UTC (rev 7129)
+++ xfce4-power-manager/trunk/src/xfpm-lid-hal.c	2009-04-07 11:23:27 UTC (rev 7130)
@@ -54,7 +54,6 @@
 
 struct XfpmLidHalPrivate
 {
-    HalManager *manager;
     HalDevice  *device;
     
     GTimer      *timer;
@@ -99,7 +98,6 @@
 {
     lid->priv = XFPM_LID_HAL_GET_PRIVATE(lid);
     
-    lid->priv->manager      = NULL;
     lid->priv->device       = NULL;
     lid->priv->hw_found     = FALSE;
     lid->priv->timer        = g_timer_new ();
@@ -112,9 +110,6 @@
 
     lid = XFPM_LID_HAL(object);
     
-    if ( lid->priv->manager )
-    	g_object_unref (lid->priv->manager);
-
     if ( lid->priv->device )
     	g_object_unref (lid->priv->device);
 
@@ -160,14 +155,16 @@
 static gboolean
 xfpm_lid_hal_setup (XfpmLidHal *lid)
 {
-    HalDevice *device;
+    HalManager *manager;
     gchar **udi = NULL;
     
-    lid->priv->manager = hal_manager_new ();
-    device = hal_device_new ();
+    manager = hal_manager_new ();
+    lid->priv->device = hal_device_new ();
     
-    udi = hal_manager_find_device_by_capability (lid->priv->manager, "button");
+    udi = hal_manager_find_device_by_capability (manager, "button");
     
+    g_object_unref (manager);
+    
     if ( !udi )
     	return FALSE;
 	
@@ -175,13 +172,13 @@
     
     for ( i = 0; udi[i]; i++ )
     {
-	hal_device_set_udi (device, udi[i]);
-	if ( hal_device_has_key (device,  "button.type" ) &&
-	     hal_device_has_key (device,  "button.has_state" ) )
+	hal_device_set_udi (lid->priv->device, udi[i]);
+	if ( hal_device_has_key (lid->priv->device,  "button.type" ) &&
+	     hal_device_has_key (lid->priv->device,  "button.has_state" ) )
     	{
 	    
 	    gchar *button_type =
-	    	hal_device_get_property_string (device, "button.type");
+	    	hal_device_get_property_string (lid->priv->device, "button.type");
 		
 	    if ( !button_type )
 	    {
@@ -192,7 +189,6 @@
 	    {
 	    	lid->priv->hw_found = TRUE;
 		
-		lid->priv->device = device;
 		g_signal_connect (lid->priv->device, "device-changed", 
 				  G_CALLBACK(xfpm_lid_hal_device_changed_cb), lid);
 		if ( !hal_device_watch (lid->priv->device) )
@@ -206,10 +202,9 @@
     }
 
     if ( !lid->priv->hw_found )
-	g_object_unref (device);
+	g_object_unref (lid->priv->device);
         
     hal_manager_free_string_array (udi);
-    
     return TRUE;
 }
 
@@ -229,5 +224,14 @@
     g_return_val_if_fail (XFPM_IS_LID_HAL(lid), FALSE);
     
     return lid->priv->hw_found;
+}
+
+void xfpm_lid_hal_reload (XfpmLidHal *lid)
+{
+    g_return_if_fail (XFPM_IS_LID_HAL (lid));
     
+    if ( lid->priv->hw_found )
+	g_object_unref (lid->priv->device);
+	
+    xfpm_lid_hal_setup (lid);
 }

Modified: xfce4-power-manager/trunk/src/xfpm-lid-hal.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-lid-hal.h	2009-04-07 09:16:47 UTC (rev 7129)
+++ xfce4-power-manager/trunk/src/xfpm-lid-hal.h	2009-04-07 11:23:27 UTC (rev 7130)
@@ -46,10 +46,14 @@
     
 } XfpmLidHalClass;
 
-GType        	  xfpm_lid_hal_get_type        (void) G_GNUC_CONST;
-XfpmLidHal       *xfpm_lid_hal_new             (void);
-gboolean          xfpm_lid_hw_found            (XfpmLidHal *lid);
+GType        	  	  xfpm_lid_hal_get_type        (void) G_GNUC_CONST;
 
+XfpmLidHal       	 *xfpm_lid_hal_new             (void);
+
+gboolean          	  xfpm_lid_hw_found            (XfpmLidHal *lid) G_GNUC_PURE;
+
+void                      xfpm_lid_hal_reload          (XfpmLidHal *lid);
+
 G_END_DECLS
 
 #endif /* __XFPM_LID_HAL_H */

Modified: xfce4-power-manager/trunk/src/xfpm-manager.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-manager.c	2009-04-07 09:16:47 UTC (rev 7129)
+++ xfce4-power-manager/trunk/src/xfpm-manager.c	2009-04-07 11:23:27 UTC (rev 7130)
@@ -74,7 +74,7 @@
 {
     TRACE("connected = %s", xfpm_bool_to_string (connected));
     
-    if ( connected )
+    if ( connected  == TRUE )
     {
 	if ( manager->priv->engine == NULL)
 	{
@@ -82,8 +82,7 @@
 	}
 	else
 	{
-	    xfpm_manager_quit (manager);
-	    g_spawn_command_line_async ("xfce4-power-manager", NULL);
+	    xfpm_engine_reload_hal_objects (manager->priv->engine);
 	}
     }
 }

Modified: xfce4-power-manager/trunk/src/xfpm-shutdown.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-shutdown.c	2009-04-07 09:16:47 UTC (rev 7129)
+++ xfce4-power-manager/trunk/src/xfpm-shutdown.c	2009-04-07 11:23:27 UTC (rev 7130)
@@ -434,3 +434,10 @@
 	g_error_free (error_internal);
     }
 }
+
+void xfpm_shutdown_reload (XfpmShutdown *shutdown)
+{
+    g_return_if_fail (XFPM_IS_SHUTDOWN (shutdown));
+    
+    xfpm_shutdown_power_management_check (shutdown);
+}

Modified: xfce4-power-manager/trunk/src/xfpm-shutdown.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-shutdown.h	2009-04-07 09:16:47 UTC (rev 7129)
+++ xfce4-power-manager/trunk/src/xfpm-shutdown.h	2009-04-07 11:23:27 UTC (rev 7130)
@@ -69,6 +69,7 @@
 void                      xfpm_suspend                  (XfpmShutdown *shutdown,
 							 GError **error);
 
+void			  xfpm_shutdown_reload          (XfpmShutdown *shutdown);
 
 G_END_DECLS
 

Modified: xfce4-power-manager/trunk/src/xfpm-supply.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-supply.c	2009-04-07 09:16:47 UTC (rev 7129)
+++ xfce4-power-manager/trunk/src/xfpm-supply.c	2009-04-07 11:23:27 UTC (rev 7130)
@@ -416,6 +416,7 @@
 xfpm_supply_monitor_start (XfpmSupply *supply)
 {
     //FIXME: Check the system formfactor
+    supply->priv->adapter_present = xfpm_adapter_get_present (supply->priv->adapter);
     
     GPtrArray *array = hal_power_get_batteries (supply->priv->power);
     
@@ -455,7 +456,6 @@
 void xfpm_supply_monitor (XfpmSupply *supply)
 {
     supply->priv->adapter = xfpm_adapter_new ();
-    supply->priv->adapter_present = xfpm_adapter_get_present (supply->priv->adapter);
     
     g_signal_connect (supply->priv->adapter, "adapter-changed",
 		      G_CALLBACK(xfpm_supply_adapter_changed_cb), supply);
@@ -478,3 +478,16 @@
     
     return xfpm_supply_on_low_power(supply);
 }
+
+void xfpm_supply_reload (XfpmSupply *supply)
+{
+    g_return_if_fail (XFPM_IS_SUPPLY (supply));
+    
+    g_object_unref (supply->priv->power);
+    g_hash_table_destroy (supply->priv->hash);
+    
+    supply->priv->power = hal_power_new ();
+    supply->priv->hash  = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
+    
+    xfpm_supply_monitor_start (supply);
+}

Modified: xfce4-power-manager/trunk/src/xfpm-supply.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-supply.h	2009-04-07 09:16:47 UTC (rev 7129)
+++ xfce4-power-manager/trunk/src/xfpm-supply.h	2009-04-07 11:23:27 UTC (rev 7130)
@@ -59,6 +59,8 @@
 
 gboolean                 xfpm_supply_on_low_battery (XfpmSupply *supply);
 
+void                     xfpm_supply_reload         (XfpmSupply *supply);
+
 G_END_DECLS
 
 #endif /* __XFPM_SUPPLY_H */




More information about the Goodies-commits mailing list