[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