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

Ali Abdallah aliov at xfce.org
Sun Jun 28 00:19:57 CEST 2009


Author: aliov
Date: 2009-06-27 22:19:57 +0000 (Sat, 27 Jun 2009)
New Revision: 7631

Removed:
   xfce4-power-manager/trunk/libxfpm/hal-monitor.c
   xfce4-power-manager/trunk/libxfpm/hal-monitor.h
Modified:
   xfce4-power-manager/trunk/ChangeLog
   xfce4-power-manager/trunk/libxfpm/Makefile.am
   xfce4-power-manager/trunk/libxfpm/hal-device.c
   xfce4-power-manager/trunk/src/xfpm-cpu.c
   xfce4-power-manager/trunk/src/xfpm-dbus-monitor.c
   xfce4-power-manager/trunk/src/xfpm-dbus-monitor.h
   xfce4-power-manager/trunk/src/xfpm-inhibit.c
   xfce4-power-manager/trunk/src/xfpm-manager.c
   xfce4-power-manager/trunk/src/xfpm-marshal.list
   xfce4-power-manager/trunk/src/xfpm-session.c
   xfce4-power-manager/trunk/src/xfpm-shutdown.c
   xfce4-power-manager/trunk/src/xfpm-tray-icon.c
Log:
	* Use xfpm-dbus-monitor for dbus monitoring stuff, so hal-monitor is removed.
	* hal-device.c Fix a Glib warnings when DBus is disconnected.
	

Modified: xfce4-power-manager/trunk/ChangeLog
===================================================================
--- xfce4-power-manager/trunk/ChangeLog	2009-06-27 09:18:09 UTC (rev 7630)
+++ xfce4-power-manager/trunk/ChangeLog	2009-06-27 22:19:57 UTC (rev 7631)
@@ -1,3 +1,7 @@
+2009-06-28: 12:10 Ali aliov at xfce.org
+	* Use xfpm-dbus-monitor for dbus monitoring stuff, so hal-monitor is removed.
+	* hal-device.c Fix a Glib warnings when DBus is disconnected.
+	
 2009-06-27: 11:15 Ali aliov at xfce.org 
 	* Use "/xfce4-power-manager" as a prefix for properties name to avoid
 	incompatibile installation with old versions.

Modified: xfce4-power-manager/trunk/libxfpm/Makefile.am
===================================================================
--- xfce4-power-manager/trunk/libxfpm/Makefile.am	2009-06-27 09:18:09 UTC (rev 7630)
+++ xfce4-power-manager/trunk/libxfpm/Makefile.am	2009-06-27 22:19:57 UTC (rev 7631)
@@ -4,8 +4,6 @@
 	libxfpmcommon.la
 
 libxfpmhal_la_SOURCES =			\
-	hal-monitor.c			\
-	hal-monitor.h			\
 	hal-manager.c			\
 	hal-manager.h			\
 	hal-device.c			\

Modified: xfce4-power-manager/trunk/libxfpm/hal-device.c
===================================================================
--- xfce4-power-manager/trunk/libxfpm/hal-device.c	2009-06-27 09:18:09 UTC (rev 7630)
+++ xfce4-power-manager/trunk/libxfpm/hal-device.c	2009-06-27 22:19:57 UTC (rev 7631)
@@ -149,7 +149,7 @@
 			     G_TYPE_INVALID);
     
     dbus_g_proxy_connect_signal (device->priv->proxy, "PropertyModified",
-				 G_CALLBACK(hal_device_property_modified_cb), device, NULL);
+				 G_CALLBACK (hal_device_property_modified_cb), device, NULL);
     
     device->priv->watch_added = TRUE;
 }
@@ -182,6 +182,14 @@
 }
 
 static void
+hal_device_proxy_destroy_cb (HalDevice *device)
+{
+    g_return_if_fail (HAL_IS_DEVICE (device));
+    
+    device->priv->proxy = NULL;
+}
+
+static void
 hal_device_init (HalDevice *device)
 {
     GError *error = NULL;
@@ -204,30 +212,35 @@
 }
 
 static void
-hal_device_finalize(GObject *object)
+hal_device_finalize (GObject *object)
 {
     HalDevice *device;
 
-    device = HAL_DEVICE(object);
+    device = HAL_DEVICE (object);
+
+    g_debug ("Finalizing object with udi=%s", device->priv->udi);
     
     if ( device->priv->udi )
 	g_free (device->priv->udi);
-	
+
     if ( device->priv->bus )
 	dbus_g_connection_unref (device->priv->bus);
 	
-    if ( device->priv->watch_added )
+    if ( device->priv->watch_added && device->priv->proxy )
 	dbus_g_proxy_disconnect_signal (device->priv->proxy, "PropertyModified",
 					G_CALLBACK(hal_device_property_modified_cb), device);
 					
-    if ( device->priv->watch_condition_added )
+    if ( device->priv->watch_condition_added && device->priv->proxy )
+    {
 	dbus_g_proxy_disconnect_signal (device->priv->proxy, "Condition",
 					G_CALLBACK(hal_device_condition_cb), device);
-	
+    }
+    
+    
     if ( device->priv->proxy )
 	g_object_unref (device->priv->proxy);
 
-    G_OBJECT_CLASS(hal_device_parent_class)->finalize(object);
+    G_OBJECT_CLASS (hal_device_parent_class)->finalize (object);
 }
 
 HalDevice *
@@ -256,6 +269,8 @@
 						     "org.freedesktop.Hal",
 						     device->priv->udi,
 						     "org.freedesktop.Hal.Device");
+    g_signal_connect_swapped (G_OBJECT (device->priv->proxy), "destroy",
+			      G_CALLBACK (hal_device_proxy_destroy_cb), device);
 }
 
 const gchar *hal_device_get_udi (HalDevice *device)

Modified: xfce4-power-manager/trunk/src/xfpm-cpu.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-cpu.c	2009-06-27 09:18:09 UTC (rev 7630)
+++ xfce4-power-manager/trunk/src/xfpm-cpu.c	2009-06-27 22:19:57 UTC (rev 7631)
@@ -395,11 +395,13 @@
     XfpmCpu *cpu;
 
     cpu = XFPM_CPU(object);
+
+    if ( cpu->priv->conf )
+	g_object_unref (cpu->priv->conf);
     
-    g_object_unref (cpu->priv->conf);
+    if ( cpu->priv->conf )
+	g_object_unref (cpu->priv->adapter);
 	
-    g_object_unref (cpu->priv->adapter);
-	
     if ( cpu->priv->bus )
 	dbus_g_connection_unref (cpu->priv->bus);
 

Modified: xfce4-power-manager/trunk/src/xfpm-dbus-monitor.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-dbus-monitor.c	2009-06-27 09:18:09 UTC (rev 7630)
+++ xfce4-power-manager/trunk/src/xfpm-dbus-monitor.c	2009-06-27 22:19:57 UTC (rev 7631)
@@ -33,7 +33,11 @@
 
 #include <libxfce4util/libxfce4util.h>
 
+#include "libxfpm/xfpm-string.h"
+#include "libxfpm/xfpm-dbus.h"
+
 #include "xfpm-dbus-monitor.h"
+#include "xfpm-marshal.h"
 
 static void xfpm_dbus_monitor_finalize   (GObject *object);
 
@@ -43,14 +47,29 @@
 struct XfpmDBusMonitorPrivate
 {
     DBusGConnection *system_bus;
-    DBusGConnection *bus;
-    DBusGProxy      *proxy;
-    GPtrArray       *array;
+    DBusGConnection *session_bus;
+
+    DBusGProxy      *system_proxy;
+    DBusGProxy      *session_proxy;
+    
+    GPtrArray       *names_array;
+    GPtrArray 	    *services_array;
+    
+    gboolean	     hal_connected;
 };
 
+typedef struct
+{
+    gchar 	*name;
+    DBusBusType  bus_type;
+    
+} XfpmWatchData;
+
 enum
 {
-    CONNECTION_LOST,
+    UNIQUE_NAME_LOST,
+    SERVICE_CONNECTION_CHANGED,
+    HAL_CONNECTION_CHANGED,
     SYSTEM_BUS_CONNECTION_CHANGED,
     LAST_SIGNAL
 };
@@ -60,34 +79,109 @@
 G_DEFINE_TYPE (XfpmDBusMonitor, xfpm_dbus_monitor, G_TYPE_OBJECT)
 
 static void
-xfpm_dbus_monitor_unique_connection_name_lost (XfpmDBusMonitor *monitor, const gchar *name)
+xfpm_dbus_monitor_free_watch_data (XfpmWatchData *data)
 {
+    g_free (data->name);
+    g_free (data);
+}
+
+static XfpmWatchData *
+xfpm_dbus_monitor_get_watch_data (GPtrArray *array, const gchar *name, DBusBusType bus_type)
+{
+    XfpmWatchData *data;
+    guint i;
+    
+    for ( i = 0; i < array->len; i++)
+    {
+	data = g_ptr_array_index (array, i);
+	if ( !g_strcmp0 (data->name, name) && data->bus_type == bus_type )
+	    return data;
+    }
+    return NULL;
+}
+
+static void
+xfpm_dbus_monitor_unique_connection_name_lost (XfpmDBusMonitor *monitor, DBusBusType bus_type, const gchar *name)
+{
+    XfpmWatchData *watch;
     guint i = 0;
-    gchar *array_name;
     
-    for ( i = 0; i < monitor->priv->array->len; i++ )
+    for ( i = 0; i < monitor->priv->names_array->len; i++ )
     {
-	array_name = g_ptr_array_index (monitor->priv->array, i);
-	if ( g_strcmp0 (array_name, name) == 0 )
+	watch = g_ptr_array_index (monitor->priv->names_array, i);
+	
+	if ( !g_strcmp0 (watch->name, name) && bus_type == watch->bus_type )
 	{
-	    g_signal_emit (G_OBJECT(monitor), signals [CONNECTION_LOST], 0, array_name);
-	    //g_free (array_name);
-	    //g_ptr_array_remove_index (monitor->priv->array, i);
+	    TRACE ("Unique name %s disconnected ", name);
+	    g_signal_emit (G_OBJECT(monitor), signals [UNIQUE_NAME_LOST], 0, 
+			   watch->name, bus_type == DBUS_BUS_SESSION ? TRUE : FALSE);
+	    xfpm_dbus_monitor_free_watch_data (watch);
 	}
     }
 }
 
 static void
-xfpm_dbus_monitor_name_owner_changed_cb (DBusGProxy *proxy, const gchar *name,
-					 const gchar *prev, const gchar *new,
-					 XfpmDBusMonitor *monitor)
+xfpm_dbus_monitor_service_connection_changed (XfpmDBusMonitor *monitor, DBusBusType bus_type, 
+					      const gchar *name, gboolean connected)
 {
+    XfpmWatchData *watch;
+    guint i;
+    
+    /* Simplify things for HAL */
+    if ( !g_strcmp0 (name, "org.freedesktop.Hal") && bus_type == DBUS_BUS_SYSTEM )
+    {
+	monitor->priv->hal_connected = connected;
+	g_signal_emit (G_OBJECT (monitor), signals [HAL_CONNECTION_CHANGED], 0, connected);
+	return;
+    }
+    
+    for ( i = 0; i < monitor->priv->services_array->len; i++)
+    {
+	watch = g_ptr_array_index (monitor->priv->services_array, i);
+	
+	if ( !g_strcmp0 (watch->name, name) && watch->bus_type == bus_type)
+	{
+	    TRACE ("Service %s connection changed %s", name, xfpm_bool_to_string (connected));
+	    g_signal_emit (G_OBJECT (monitor), signals [SERVICE_CONNECTION_CHANGED], 0,
+			   name, connected, bus_type == DBUS_BUS_SESSION ? TRUE : FALSE);
+	}
+    }
+}
+
+static void
+xfpm_dbus_monitor_name_owner_changed (XfpmDBusMonitor *monitor, const gchar *name,
+				      const gchar *prev, const gchar *new, DBusBusType bus_type)
+{
     if ( strlen (prev) != 0 )
     {
-	xfpm_dbus_monitor_unique_connection_name_lost (monitor, prev);
+	xfpm_dbus_monitor_unique_connection_name_lost (monitor, bus_type, prev);
+	
+	/* Connection has name */
+	if ( strlen (name) != 0 )
+	    xfpm_dbus_monitor_service_connection_changed (monitor, bus_type, name, FALSE);
     }
+    else if ( strlen (name) != 0 && strlen (new) != 0)
+    {
+	xfpm_dbus_monitor_service_connection_changed (monitor, bus_type, name, FALSE);
+    }
 }
 
+static void
+xfpm_dbus_monitor_session_name_owner_changed_cb (DBusGProxy *proxy, const gchar *name,
+						 const gchar *prev, const gchar *new,
+						 XfpmDBusMonitor *monitor)
+{
+    xfpm_dbus_monitor_name_owner_changed (monitor, name, prev, new, DBUS_BUS_SESSION);
+}
+
+static void
+xfpm_dbus_monitor_system_name_owner_changed_cb  (DBusGProxy *proxy, const gchar *name,
+						 const gchar *prev, const gchar *new,
+						 XfpmDBusMonitor *monitor)
+{
+    xfpm_dbus_monitor_name_owner_changed (monitor, name, prev, new, DBUS_BUS_SYSTEM);
+}
+
 static gboolean
 xfpm_dbus_monitor_query_system_bus_idle (gpointer data)
 {
@@ -140,27 +234,89 @@
 }
 
 static void
+xfpm_dbus_monitor_session (XfpmDBusMonitor *monitor)
+{
+    monitor->priv->session_proxy = dbus_g_proxy_new_for_name_owner (monitor->priv->session_bus,
+								    "org.freedesktop.DBus",
+								    "/org/freedesktop/DBus",
+								    "org.freedesktop.DBus",
+								    NULL);
+    if ( !monitor->priv->session_proxy )
+    {
+	g_critical ("Unable to create proxy on /org/freedesktop/DBus");
+	return;
+    }
+    
+    dbus_g_proxy_add_signal (monitor->priv->session_proxy, "NameOwnerChanged", 
+			     G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INVALID);
+			     
+    dbus_g_proxy_connect_signal (monitor->priv->session_proxy, "NameOwnerChanged",
+				 G_CALLBACK (xfpm_dbus_monitor_session_name_owner_changed_cb), monitor, NULL);
+}
+
+static void
+xfpm_dbus_monitor_system (XfpmDBusMonitor *monitor)
+{
+    monitor->priv->system_proxy = dbus_g_proxy_new_for_name_owner (monitor->priv->system_bus,
+								   "org.freedesktop.DBus",
+								   "/org/freedesktop/DBus",
+								   "org.freedesktop.DBus",
+								   NULL);
+    if ( !monitor->priv->system_proxy )
+    {
+	g_critical ("Unable to create proxy on /org/freedesktop/DBus");
+	return;
+    }
+    
+    dbus_g_proxy_add_signal (monitor->priv->system_proxy, "NameOwnerChanged", 
+			     G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INVALID);
+			     
+    dbus_g_proxy_connect_signal (monitor->priv->system_proxy, "NameOwnerChanged",
+				 G_CALLBACK (xfpm_dbus_monitor_system_name_owner_changed_cb), monitor, NULL);
+}
+
+static void
 xfpm_dbus_monitor_class_init (XfpmDBusMonitorClass *klass)
 {
     GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
-    signals [CONNECTION_LOST] =
-    	g_signal_new("connection-lost",
-		     XFPM_TYPE_DBUS_MONITOR,
-		     G_SIGNAL_RUN_LAST,
-		     G_STRUCT_OFFSET(XfpmDBusMonitorClass, connection_lost),
-		     NULL, NULL,
-		     g_cclosure_marshal_VOID__STRING,
-		     G_TYPE_NONE, 1, G_TYPE_STRING);
+    signals [UNIQUE_NAME_LOST] =
+    	g_signal_new ("unique-name-lost",
+		      XFPM_TYPE_DBUS_MONITOR,
+		      G_SIGNAL_RUN_LAST,
+		      G_STRUCT_OFFSET (XfpmDBusMonitorClass, unique_name_lost),
+		      NULL, NULL,
+		      _xfpm_marshal_VOID__STRING_BOOLEAN,
+		      G_TYPE_NONE, 2, 
+		      G_TYPE_STRING, G_TYPE_BOOLEAN);
 		     
+    signals [HAL_CONNECTION_CHANGED] =
+    	g_signal_new ("hal-connection-changed",
+		      XFPM_TYPE_DBUS_MONITOR,
+		      G_SIGNAL_RUN_LAST,
+		      G_STRUCT_OFFSET (XfpmDBusMonitorClass, hal_connection_changed),
+		      NULL, NULL,
+		      g_cclosure_marshal_VOID__BOOLEAN,
+		      G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
+		      
+    signals [SERVICE_CONNECTION_CHANGED] =
+    	g_signal_new ("service-connection-changed",
+		      XFPM_TYPE_DBUS_MONITOR,
+		      G_SIGNAL_RUN_LAST,
+		      G_STRUCT_OFFSET (XfpmDBusMonitorClass, service_connection_changed),
+		      NULL, NULL,
+		      _xfpm_marshal_VOID__STRING_BOOLEAN_BOOLEAN,
+		      G_TYPE_NONE, 3, G_TYPE_STRING,
+		      G_TYPE_BOOLEAN, G_TYPE_BOOLEAN);
+		      
     signals [SYSTEM_BUS_CONNECTION_CHANGED] =
-    	g_signal_new("system-bus-connection-changed",
-		     XFPM_TYPE_DBUS_MONITOR,
-		     G_SIGNAL_RUN_LAST,
-		     G_STRUCT_OFFSET(XfpmDBusMonitorClass, system_bus_connection_changed),
-		     NULL, NULL,
-		     g_cclosure_marshal_VOID__BOOLEAN,
-		     G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
+    	g_signal_new ("system-bus-connection-changed",
+		      XFPM_TYPE_DBUS_MONITOR,
+		      G_SIGNAL_RUN_LAST,
+		      G_STRUCT_OFFSET (XfpmDBusMonitorClass, system_bus_connection_changed),
+		      NULL, NULL,
+		      g_cclosure_marshal_VOID__BOOLEAN,
+		      G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
 		     
     object_class->finalize = xfpm_dbus_monitor_finalize;
 
@@ -170,37 +326,20 @@
 static void
 xfpm_dbus_monitor_init (XfpmDBusMonitor *monitor)
 {
-    GError *error = NULL;
-    
     monitor->priv = XFPM_DBUS_MONITOR_GET_PRIVATE (monitor);
     
-    monitor->priv->bus = dbus_g_bus_get (DBUS_BUS_SESSION, NULL);
-    monitor->priv->array = g_ptr_array_new ();
+    monitor->priv->session_proxy = NULL;
+    monitor->priv->system_proxy  = NULL;
     
-    monitor->priv->proxy = dbus_g_proxy_new_for_name_owner (monitor->priv->bus,
-							    "org.freedesktop.DBus",
-							    "/org/freedesktop/DBus",
-							    "org.freedesktop.DBus",
-							    NULL);
-    if ( !monitor->priv->proxy )
-    {
-	g_critical ("Unable to create proxy on /org/freedesktop/DBus");
-	return;
-    }
+    monitor->priv->names_array = g_ptr_array_new ();
+    monitor->priv->services_array = g_ptr_array_new ();
+         
+    monitor->priv->session_bus = dbus_g_bus_get (DBUS_BUS_SESSION, NULL);
+    monitor->priv->system_bus  = dbus_g_bus_get (DBUS_BUS_SYSTEM,  NULL);
     
-    dbus_g_proxy_add_signal (monitor->priv->proxy, "NameOwnerChanged", 
-			     G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INVALID);
-			     
-    dbus_g_proxy_connect_signal (monitor->priv->proxy, "NameOwnerChanged",
-				 G_CALLBACK(xfpm_dbus_monitor_name_owner_changed_cb), monitor, NULL);
-
-    monitor->priv->system_bus = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error);
+    xfpm_dbus_monitor_session (monitor);
+    xfpm_dbus_monitor_system  (monitor);
     
-    if ( error )
-    {
-	g_error ("Error in getting connection to the system bus %s:", error->message);
-    }
-    
     dbus_connection_set_exit_on_disconnect (dbus_g_connection_get_connection (monitor->priv->system_bus), 
 					    FALSE);
     
@@ -208,36 +347,47 @@
 			        xfpm_dbus_monitor_system_bus_filter,
 				monitor, 
 				NULL);
+				
+    monitor->priv->hal_connected  = xfpm_dbus_name_has_owner (dbus_g_connection_get_connection (monitor->priv->system_bus), 
+							      "org.freedesktop.Hal");
+							      
+    xfpm_dbus_monitor_add_service (monitor, DBUS_BUS_SESSION, "org.freedesktop.Hal");
 }
 
 static void
 xfpm_dbus_monitor_finalize (GObject *object)
 {
     XfpmDBusMonitor *monitor;
-    guint i;
-    gchar *name;
 
     monitor = XFPM_DBUS_MONITOR (object);
     
+    if ( monitor->priv->session_proxy )
+    {
+	dbus_g_proxy_disconnect_signal (monitor->priv->session_proxy, "NameOwnerChanged",
+					G_CALLBACK (xfpm_dbus_monitor_session_name_owner_changed_cb), monitor);
+	g_object_unref (monitor->priv->session_proxy);
+    }
+
+    if ( monitor->priv->system_proxy )
+    {
+	dbus_g_proxy_disconnect_signal (monitor->priv->system_proxy, "NameOwnerChanged",
+				        G_CALLBACK (xfpm_dbus_monitor_system_name_owner_changed_cb), monitor);
+	g_object_unref (monitor->priv->system_proxy);
+    }
+
     dbus_connection_remove_filter (dbus_g_connection_get_connection (monitor->priv->system_bus),
 				   xfpm_dbus_monitor_system_bus_filter,
 				   monitor);
 
     dbus_g_connection_unref (monitor->priv->system_bus);
-    
-    dbus_g_connection_unref (monitor->priv->bus);
-    
-    g_object_unref (monitor->priv->proxy);
+    dbus_g_connection_unref (monitor->priv->session_bus);
 
-    for ( i = 0; i<monitor->priv->array->len; i++)
-    {
-	name = g_ptr_array_index (monitor->priv->array, i);
-	g_ptr_array_remove (monitor->priv->array, name);
-	g_free (name);
-    }
-    
-    g_ptr_array_free (monitor->priv->array, TRUE);
+    g_ptr_array_foreach (monitor->priv->names_array, (GFunc) xfpm_dbus_monitor_free_watch_data, NULL);
+    g_ptr_array_foreach (monitor->priv->services_array, (GFunc) xfpm_dbus_monitor_free_watch_data, NULL);
 
+    g_ptr_array_free (monitor->priv->names_array, TRUE);
+    g_ptr_array_free (monitor->priv->services_array, TRUE);
+
     G_OBJECT_CLASS (xfpm_dbus_monitor_parent_class)->finalize (object);
 }
 
@@ -245,6 +395,7 @@
 xfpm_dbus_monitor_new (void)
 {
     static gpointer xfpm_dbus_monitor_object = NULL;
+    
     if ( G_LIKELY (xfpm_dbus_monitor_object != NULL) )
     {
 	g_object_ref (xfpm_dbus_monitor_object);
@@ -258,45 +409,76 @@
     return XFPM_DBUS_MONITOR (xfpm_dbus_monitor_object);
 }
 
-gboolean xfpm_dbus_monitor_add_match (XfpmDBusMonitor *monitor, const gchar *unique_name)
+gboolean xfpm_dbus_monitor_add_unique_name (XfpmDBusMonitor *monitor, DBusBusType bus_type, const gchar *unique_name)
 {
-    guint i = 0;
-    gchar *name;
+    XfpmWatchData *watch;
     
     g_return_val_if_fail (XFPM_IS_DBUS_MONITOR (monitor), FALSE);
     g_return_val_if_fail (unique_name != NULL, FALSE);
     
-    for ( i = 0; i<monitor->priv->array->len; i++)
+    /* We have it already */
+    if ( xfpm_dbus_monitor_get_watch_data (monitor->priv->names_array, unique_name, bus_type) )
+	return FALSE;
+	
+    TRACE ("Monitoring application with unique_name %s", unique_name);
+    
+    watch = g_new0 (XfpmWatchData , 1);
+    watch->name = g_strdup (unique_name);
+    watch->bus_type = bus_type;
+    
+    g_ptr_array_add (monitor->priv->names_array, watch);
+    return TRUE;
+}
+
+void xfpm_dbus_monitor_remove_unique_name (XfpmDBusMonitor *monitor, DBusBusType bus_type, const gchar *unique_name)
+{
+    XfpmWatchData *watch;
+    
+    g_return_if_fail (XFPM_IS_DBUS_MONITOR (monitor));
+
+    watch = xfpm_dbus_monitor_get_watch_data (monitor->priv->names_array, unique_name, bus_type);
+    
+    if ( watch )
     {
-	name = g_ptr_array_index (monitor->priv->array, i);
-	if ( g_strcmp0 (name, unique_name) == 0 )
-	{
-	    return FALSE;
-	}
+	g_ptr_array_remove (monitor->priv->names_array, watch);
+	xfpm_dbus_monitor_free_watch_data (watch);
     }
+}
+
+gboolean xfpm_dbus_monitor_add_service (XfpmDBusMonitor *monitor, DBusBusType bus_type, const gchar *service_name)
+{
+    XfpmWatchData *watch;
     
-    g_ptr_array_add (monitor->priv->array, g_strdup (unique_name));
+    g_return_val_if_fail (XFPM_IS_DBUS_MONITOR (monitor), FALSE);
     
+    if ( xfpm_dbus_monitor_get_watch_data (monitor->priv->services_array, service_name, bus_type ) )
+	return FALSE;
+	
+    watch = g_new0 (XfpmWatchData , 1);
+    watch->name = g_strdup (service_name);
+    watch->bus_type = bus_type;
+    
+    g_ptr_array_add (monitor->priv->services_array, watch);
+    
     return TRUE;
 }
 
-gboolean xfpm_dbus_monitor_remove_match (XfpmDBusMonitor *monitor, const gchar *unique_name)
+void xfpm_dbus_monitor_remove_service (XfpmDBusMonitor *monitor, DBusBusType bus_type, const gchar *service_name)
 {
-    guint i ;
-    gchar *name;
+    XfpmWatchData *watch;
     
-    g_return_val_if_fail (XFPM_IS_DBUS_MONITOR (monitor), FALSE);
+    g_return_if_fail (XFPM_IS_DBUS_MONITOR (monitor));
     
-    for ( i = 0; i<monitor->priv->array->len; i++)
+    watch = xfpm_dbus_monitor_get_watch_data (monitor->priv->services_array, service_name, bus_type);
+    
+    if ( watch )
     {
-	name = g_ptr_array_index (monitor->priv->array, i);
-	
-	if ( g_strcmp0 (name, unique_name) == 0 )
-	{
-	    g_free (name);
-	    g_ptr_array_remove_index (monitor->priv->array, i);
-	    return TRUE;
-	}
+	g_ptr_array_remove (monitor->priv->services_array, watch);
+	xfpm_dbus_monitor_free_watch_data (watch);
     }
-    return FALSE;
 }
+
+gboolean xfpm_dbus_monitor_hal_connected (XfpmDBusMonitor *monitor)
+{
+    return monitor->priv->hal_connected;
+}

Modified: xfce4-power-manager/trunk/src/xfpm-dbus-monitor.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-dbus-monitor.h	2009-06-27 09:18:09 UTC (rev 7630)
+++ xfce4-power-manager/trunk/src/xfpm-dbus-monitor.h	2009-06-27 22:19:57 UTC (rev 7631)
@@ -22,6 +22,7 @@
 #define __XFPM_DBUS_MONITOR_H
 
 #include <glib-object.h>
+#include <dbus/dbus.h>
 
 G_BEGIN_DECLS
 
@@ -40,30 +41,59 @@
 
 typedef struct
 {
-    GObjectClass 		parent_class;
+    GObjectClass 	parent_class;
+    
     /*
-     * Connection lost on the session bus
+     * Unique name connection lost.
      */
-    void                        (*connection_lost)		  (XfpmDBusMonitor *monitor,
-								   gchar *unique_name);
-								   
+    void                (*unique_name_lost)			(XfpmDBusMonitor *monitor,
+								 gchar *unique_name,
+								 gboolean on_session);
+								 
     /*
+     * A Service connection changed.
+     */
+    void                (*service_connection_changed)		(XfpmDBusMonitor *monitor,
+								 gchar *service_name,
+							         gboolean connected,
+								 gboolean on_session);
+								 
+    /*
+     * Hal Connection
+     */
+    void		(*hal_connection_changed)		(XfpmDBusMonitor *monitor,
+								 gboolean connected);
+      
+    /*
      * DBus: system bus disconnected
      */
-    void			(*system_bus_connection_changed)  (XfpmDBusMonitor *monitor,
-								   gboolean connected);
+    void		(*system_bus_connection_changed)  	(XfpmDBusMonitor *monitor,
+								 gboolean connected);
     
 } XfpmDBusMonitorClass;
 
-GType        			xfpm_dbus_monitor_get_type        (void) G_GNUC_CONST;
-XfpmDBusMonitor       	       *xfpm_dbus_monitor_new             (void);
+GType        		xfpm_dbus_monitor_get_type        	(void) G_GNUC_CONST;
 
-gboolean                        xfpm_dbus_monitor_add_match       (XfpmDBusMonitor *monitor,
-								   const gchar *unique_name);
+XfpmDBusMonitor        *xfpm_dbus_monitor_new             	(void);
+
+gboolean                xfpm_dbus_monitor_add_unique_name     	(XfpmDBusMonitor *monitor,
+								 DBusBusType bus_type,
+								 const gchar *unique_name);
 								   
-gboolean                        xfpm_dbus_monitor_remove_match    (XfpmDBusMonitor *monitor,
-								   const gchar *unique_name);
+void                    xfpm_dbus_monitor_remove_unique_name    (XfpmDBusMonitor *monitor,
+								 DBusBusType bus_type,
+								 const gchar *unique_name);
 
+gboolean		xfpm_dbus_monitor_add_service	  	(XfpmDBusMonitor *monitor,
+								 DBusBusType bus_type,
+								 const gchar *service_name);
+
+void			xfpm_dbus_monitor_remove_service  	(XfpmDBusMonitor *monitor,
+								 DBusBusType bus_type,
+								 const gchar *service_name);
+
+gboolean		xfpm_dbus_monitor_hal_connected		(XfpmDBusMonitor *monitor);
+
 G_END_DECLS
 
 #endif /* __XFPM_DBUS_MONITOR_H */

Modified: xfce4-power-manager/trunk/src/xfpm-inhibit.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-inhibit.c	2009-06-27 09:18:09 UTC (rev 7630)
+++ xfce4-power-manager/trunk/src/xfpm-inhibit.c	2009-06-27 22:19:57 UTC (rev 7631)
@@ -176,7 +176,7 @@
     
     if ( inhibitor )
     {
-	xfpm_dbus_monitor_remove_match (inhibit->priv->monitor, inhibitor->unique_name);
+	xfpm_dbus_monitor_remove_unique_name (inhibit->priv->monitor, DBUS_BUS_SESSION, inhibitor->unique_name);
 	xfpm_inhibit_free_inhibitor (inhibit, inhibitor);
 	return TRUE;
     }
@@ -184,10 +184,14 @@
 }
 
 static void
-xfpm_inhibit_connection_lost_cb (XfpmDBusMonitor *monitor, gchar *unique_name, XfpmInhibit *inhibit)
+xfpm_inhibit_connection_lost_cb (XfpmDBusMonitor *monitor, gchar *unique_name, 
+				 gboolean on_session, XfpmInhibit *inhibit)
 {
     Inhibitor *inhibitor;
     
+    if ( !on_session)
+	return;
+    
     inhibitor = xfpm_inhibit_find_application_by_unique_connection_name (inhibit, unique_name );
     
     if ( inhibitor )
@@ -204,7 +208,7 @@
     GObjectClass *object_class = G_OBJECT_CLASS(klass);
 
     signals[HAS_INHIBIT_CHANGED] =
-	    g_signal_new("has-inhibit-changed",
+	    g_signal_new ("has-inhibit-changed",
 			 XFPM_TYPE_INHIBIT,
 			 G_SIGNAL_RUN_LAST,
 			 G_STRUCT_OFFSET(XfpmInhibitClass, has_inhibit_changed),
@@ -214,27 +218,27 @@
 
     object_class->finalize = xfpm_inhibit_finalize;
 
-    g_type_class_add_private(klass,sizeof(XfpmInhibitPrivate));
+    g_type_class_add_private (klass, sizeof (XfpmInhibitPrivate));
     
     xfpm_inhibit_dbus_class_init (klass);
 }
 
 static void
-xfpm_inhibit_init(XfpmInhibit *inhibit)
+xfpm_inhibit_init (XfpmInhibit *inhibit)
 {
     inhibit->priv = XFPM_INHIBIT_GET_PRIVATE(inhibit);
     
     inhibit->priv->array   = g_ptr_array_new ();
     inhibit->priv->monitor = xfpm_dbus_monitor_new ();
     
-    g_signal_connect (inhibit->priv->monitor, "connection-lost",
+    g_signal_connect (inhibit->priv->monitor, "unique-name-lost",
 		      G_CALLBACK (xfpm_inhibit_connection_lost_cb), inhibit);
 		      
     xfpm_inhibit_dbus_init (inhibit);
 }
 
 static void
-xfpm_inhibit_finalize(GObject *object)
+xfpm_inhibit_finalize (GObject *object)
 {
     XfpmInhibit *inhibit;
     Inhibitor *inhibitor;
@@ -338,7 +342,7 @@
     
     xfpm_inhibit_has_inhibit_changed (inhibit);
     
-    xfpm_dbus_monitor_add_match (inhibit->priv->monitor, sender);
+    xfpm_dbus_monitor_add_unique_name (inhibit->priv->monitor, DBUS_BUS_SESSION, sender);
     
     g_free (sender);
     dbus_g_method_return (context, cookie);

Modified: xfce4-power-manager/trunk/src/xfpm-manager.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-manager.c	2009-06-27 09:18:09 UTC (rev 7630)
+++ xfce4-power-manager/trunk/src/xfpm-manager.c	2009-06-27 22:19:57 UTC (rev 7631)
@@ -37,7 +37,6 @@
 
 #include <libnotify/notify.h>
 
-#include "libxfpm/hal-monitor.h"
 #include "libxfpm/xfpm-string.h"
 #include "libxfpm/xfpm-dbus.h"
 #include "libxfpm/xfpm-popups.h"
@@ -61,9 +60,8 @@
 {
     XfpmSession     *session;
     XfpmEngine 	    *engine;
-    XfpmDBusMonitor *dbus;
     
-    HalMonitor      *monitor;
+    XfpmDBusMonitor *monitor;
     
     DBusGConnection *session_bus;
 };
@@ -71,7 +69,7 @@
 G_DEFINE_TYPE(XfpmManager, xfpm_manager, G_TYPE_OBJECT)
 
 static void
-xfpm_manager_hal_connection_changed_cb (HalMonitor *monitor, gboolean connected, XfpmManager *manager)
+xfpm_manager_hal_connection_changed_cb (XfpmDBusMonitor *monitor, gboolean connected, XfpmManager *manager)
 {
     TRACE("connected = %s", xfpm_bool_to_string (connected));
     
@@ -100,6 +98,12 @@
 }
 
 static void
+xfpm_manager_session_die_cb (XfpmSession *session, XfpmManager *manager)
+{
+    xfpm_manager_quit (manager);
+}
+
+static void
 xfpm_manager_class_init (XfpmManagerClass *klass)
 {
     GObjectClass *object_class = G_OBJECT_CLASS(klass);
@@ -114,15 +118,19 @@
 {
     manager->priv = XFPM_MANAGER_GET_PRIVATE(manager);
 
-    manager->priv->session_bus   = NULL;
     manager->priv->engine        = NULL;
-    manager->priv->monitor       = NULL;
     
     manager->priv->session = xfpm_session_new ();
-    manager->priv->dbus = xfpm_dbus_monitor_new ();
+    manager->priv->monitor = xfpm_dbus_monitor_new ();
     
-    g_signal_connect (G_OBJECT (manager->priv->dbus), "system_bus_connection_changed",
+    g_signal_connect (manager->priv->monitor, "hal-connection-changed",
+		      G_CALLBACK(xfpm_manager_hal_connection_changed_cb), manager);
+		      
+    g_signal_connect (G_OBJECT (manager->priv->monitor), "system_bus_connection_changed",
 		      G_CALLBACK (xfpm_manager_system_bus_connection_changed_cb), manager);
+
+    g_signal_connect (manager->priv->session, "session-die",
+		      G_CALLBACK (xfpm_manager_session_die_cb), manager);
 		      
     notify_init ("xfce4-power-manager");
 }
@@ -135,7 +143,7 @@
     manager = XFPM_MANAGER(object);
 
     if ( manager->priv->session_bus )
-	dbus_g_connection_unref(manager->priv->session_bus);
+	dbus_g_connection_unref (manager->priv->session_bus);
 	
     if ( manager->priv->engine )
     	g_object_unref (manager->priv->engine);
@@ -144,9 +152,7 @@
 
     g_object_unref (manager->priv->monitor);
     
-    g_object_unref (manager->priv->dbus);
-    
-    G_OBJECT_CLASS(xfpm_manager_parent_class)->finalize(object);
+    G_OBJECT_CLASS (xfpm_manager_parent_class)->finalize (object);
 }
 
 static void
@@ -163,9 +169,9 @@
 xfpm_manager_quit (XfpmManager *manager)
 {
     xfpm_manager_release_names (manager);
-    xfpm_session_quit (manager->priv->session);
+    //xfpm_session_quit (manager->priv->session);
     
-    g_object_unref(G_OBJECT(manager));
+    g_object_unref (G_OBJECT (manager));
     
     gtk_main_quit ();
     return TRUE;
@@ -188,12 +194,6 @@
     }
 }
 
-static void
-xfpm_manager_session_die_cb (XfpmSession *session, XfpmManager *manager)
-{
-    xfpm_manager_quit (manager);
-}
-
 XfpmManager *
 xfpm_manager_new (DBusGConnection *bus)
 {
@@ -214,13 +214,8 @@
     
     xfpm_manager_reserve_names (manager);
     
-    manager->priv->monitor = hal_monitor_new ();
+    hal_running = xfpm_dbus_monitor_hal_connected (manager->priv->monitor);
     
-    g_signal_connect (manager->priv->monitor, "connection-changed",
-		      G_CALLBACK(xfpm_manager_hal_connection_changed_cb), manager);
-		      
-    hal_running = hal_monitor_get_connected (manager->priv->monitor);
-    
     if (!hal_running )
     {
 	xfpm_error (_("Xfce power manager"), _("HAL daemon is not running"));
@@ -228,11 +223,6 @@
     }
     manager->priv->engine = xfpm_engine_new ();
     
-    manager->priv->session = xfpm_session_new ();
-    
-    g_signal_connect (manager->priv->session, "session-die",
-		      G_CALLBACK (xfpm_manager_session_die_cb), manager);
-    
 out:
 	;
 }
@@ -268,26 +258,26 @@
 #include "xfce-power-manager-dbus-server.h"
 
 static void
-xfpm_manager_dbus_class_init(XfpmManagerClass *klass)
+xfpm_manager_dbus_class_init (XfpmManagerClass *klass)
 {
-     dbus_g_object_type_install_info(G_TYPE_FROM_CLASS(klass),
-				    &dbus_glib_xfpm_manager_object_info);
+     dbus_g_object_type_install_info (G_TYPE_FROM_CLASS (klass),
+				     &dbus_glib_xfpm_manager_object_info);
 }
 
 static void
-xfpm_manager_dbus_init(XfpmManager *manager)
+xfpm_manager_dbus_init (XfpmManager *manager)
 {
-    dbus_g_connection_register_g_object(manager->priv->session_bus,
+    dbus_g_connection_register_g_object (manager->priv->session_bus,
 					"/org/xfce/PowerManager",
-					G_OBJECT(manager));
+					G_OBJECT (manager));
 }
 
 static gboolean
-xfpm_manager_dbus_quit(XfpmManager *manager, GError **error)
+xfpm_manager_dbus_quit (XfpmManager *manager, GError **error)
 {
     TRACE("Quit message received\n");
     
-    xfpm_manager_quit(manager);
+    xfpm_manager_quit (manager);
     
     return TRUE;
 }

Modified: xfce4-power-manager/trunk/src/xfpm-marshal.list
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-marshal.list	2009-06-27 09:18:09 UTC (rev 7630)
+++ xfce4-power-manager/trunk/src/xfpm-marshal.list	2009-06-27 22:19:57 UTC (rev 7631)
@@ -1,2 +1,4 @@
 VOID:POINTER,UINT,UINT,UINT
 VOID:BOOLEAN,ENUM
+VOID:STRING,BOOLEAN
+VOID:STRING,BOOLEAN,BOOLEAN

Modified: xfce4-power-manager/trunk/src/xfpm-session.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-session.c	2009-06-27 09:18:09 UTC (rev 7630)
+++ xfce4-power-manager/trunk/src/xfpm-session.c	2009-06-27 22:19:57 UTC (rev 7631)
@@ -152,9 +152,6 @@
 
     if ( session->priv->client != NULL )
     {
-	if ( session->priv->managed )
-	    logout_session (session->priv->client);
-    
 	client_session_free (session->priv->client);
     }
 

Modified: xfce4-power-manager/trunk/src/xfpm-shutdown.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-shutdown.c	2009-06-27 09:18:09 UTC (rev 7630)
+++ xfce4-power-manager/trunk/src/xfpm-shutdown.c	2009-06-27 22:19:57 UTC (rev 7631)
@@ -34,9 +34,7 @@
 
 #include <glib.h>
 
-#include "libxfpm/hal-monitor.h"
 #include "libxfpm/hal-device.h"
-#include "libxfpm/hal-monitor.h"
 
 #include "libxfpm/xfpm-string.h"
 #include "libxfpm/xfpm-common.h"
@@ -44,6 +42,7 @@
 #include "xfpm-shutdown.h"
 #include "xfpm-session.h"
 #include "xfpm-network-manager.h"
+#include "xfpm-dbus-monitor.h"
 #include "xfpm-errors.h"
 
 #define DUPLICATE_SHUTDOWN_REQUEST 8.0f
@@ -60,7 +59,7 @@
 struct XfpmShutdownPrivate
 {
     DBusGConnection *bus;
-    HalMonitor      *monitor;
+    XfpmDBusMonitor *monitor;
 
     XfpmSession     *session;
     gboolean         connected;
@@ -140,7 +139,7 @@
 }
 
 static void
-xfpm_shutdown_connection_changed_cb (HalMonitor *monitor, gboolean connected, XfpmShutdown *shutdown)
+xfpm_shutdown_connection_changed_cb (XfpmDBusMonitor *monitor, gboolean connected, XfpmShutdown *shutdown)
 {
     TRACE ("Hal connection changed=%s", xfpm_bool_to_string (connected));
     shutdown->priv->connected = connected;
@@ -209,10 +208,12 @@
 	return;
     }
     
-    shutdown->priv->monitor = hal_monitor_new ();
-    g_signal_connect (shutdown->priv->monitor, "connection-changed",
+    shutdown->priv->monitor = xfpm_dbus_monitor_new ();
+    
+    g_signal_connect (shutdown->priv->monitor, "hal-connection-changed",
 		      G_CALLBACK (xfpm_shutdown_connection_changed_cb), shutdown);
-    shutdown->priv->connected = hal_monitor_get_connected (shutdown->priv->monitor);
+		      
+    shutdown->priv->connected = xfpm_dbus_monitor_hal_connected (shutdown->priv->monitor);
     
     xfpm_shutdown_power_management_check (shutdown);
 }
@@ -252,8 +253,7 @@
     if ( shutdown->priv->bus )
 	dbus_g_connection_unref (shutdown->priv->bus);	
 
-    if ( shutdown->priv->monitor )
-	g_object_unref (shutdown->priv->monitor);
+    g_object_unref (shutdown->priv->monitor);
 	
     g_object_unref (shutdown->priv->session);
 	

Modified: xfce4-power-manager/trunk/src/xfpm-tray-icon.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-tray-icon.c	2009-06-27 09:18:09 UTC (rev 7630)
+++ xfce4-power-manager/trunk/src/xfpm-tray-icon.c	2009-06-27 22:19:57 UTC (rev 7631)
@@ -35,10 +35,10 @@
 #include "libxfpm/xfpm-common.h"
 #include "libxfpm/xfpm-string.h"
 #include "libxfpm/xfpm-notify.h"
-#include "libxfpm/hal-monitor.h"
 
 #include "xfpm-tray-icon.h"
 #include "xfpm-shutdown.h"
+#include "xfpm-dbus-monitor.h"
 #include "xfpm-inhibit.h"
 #include "xfpm-screen-saver.h"
 #include "xfpm-xfconf.h"
@@ -56,16 +56,16 @@
     XfpmNotify      *notify;
     XfpmInhibit     *inhibit;
     XfpmScreenSaver *srv;
-    HalMonitor      *hal_monitor;
+    XfpmDBusMonitor *monitor;
     
-    GtkStatusIcon *icon;
-    GQuark         icon_quark;
-    gboolean       info_menu;
-    gboolean       inhibited;
-    gboolean	   data_available;
+    GtkStatusIcon   *icon;
+    GQuark           icon_quark;
+    gboolean         info_menu;
+    gboolean         inhibited;
+    gboolean	     data_available;
     
-    gulong         sig;
-    gulong	   sig_1;
+    gulong           sig;
+    gulong	     sig_1;
 };
 
 enum
@@ -247,7 +247,6 @@
 xfpm_tray_icon_popup_menu_cb (GtkStatusIcon *icon, guint button, 
 			      guint activate_time, XfpmTrayIcon *tray)
 {
-    		  
     GtkWidget *menu, *mi, *img;
     gboolean can_suspend = FALSE;
     gboolean can_hibernate = FALSE ;
@@ -272,8 +271,8 @@
     if ( caller && can_hibernate && tray->priv->data_available )
     {
 	gtk_widget_set_sensitive (mi, TRUE);
-	g_signal_connect (G_OBJECT(mi), "activate",
-			  G_CALLBACK(xfpm_tray_icon_hibernate_cb), tray);
+	g_signal_connect (G_OBJECT (mi), "activate",
+			  G_CALLBACK (xfpm_tray_icon_hibernate_cb), tray);
     }
     gtk_widget_show(mi);
     gtk_menu_shell_append(GTK_MENU_SHELL(menu),mi);
@@ -381,7 +380,7 @@
 }
 
 static void
-xfpm_tray_icon_hal_connection_changed_cb (HalMonitor *monitor, gboolean connected, XfpmTrayIcon *tray)
+xfpm_tray_icon_hal_connection_changed_cb (XfpmDBusMonitor *monitor, gboolean connected, XfpmTrayIcon *tray)
 {
     if ( connected == FALSE )
 	xfpm_tray_icon_set_tooltip (tray, _("No data available"));
@@ -430,7 +429,7 @@
     tray->priv->inhibited = FALSE;
     tray->priv->inhibit = xfpm_inhibit_new ();
     tray->priv->srv     = xfpm_screen_saver_new ();
-    tray->priv->hal_monitor = hal_monitor_new ();
+    tray->priv->monitor = xfpm_dbus_monitor_new ();
     
     tray->priv->info_menu = TRUE;
     tray->priv->icon_quark = 0;
@@ -443,13 +442,14 @@
 		      
     g_signal_connect_swapped (tray->priv->icon, "activate",
 			      G_CALLBACK (xfpm_tray_icon_activated_cb), tray);
+			      
     tray->priv->sig = g_signal_connect (tray->priv->inhibit, "has-inhibit-changed",
 					G_CALLBACK (xfpm_tray_icon_inhibit_changed_cb), tray);
 					
-    tray->priv->sig_1 = g_signal_connect (tray->priv->hal_monitor, "connection_changed",
+    tray->priv->sig_1 = g_signal_connect (tray->priv->monitor, "hal-connection-changed",
 					 G_CALLBACK (xfpm_tray_icon_hal_connection_changed_cb), tray);
 					 
-    tray->priv->data_available = hal_monitor_get_connected (tray->priv->hal_monitor);
+    tray->priv->data_available = xfpm_dbus_monitor_hal_connected (tray->priv->monitor);
 }
 
 static void
@@ -462,10 +462,10 @@
     if ( g_signal_handler_is_connected (tray->priv->inhibit, tray->priv->sig ) )
 	g_signal_handler_disconnect (G_OBJECT (tray->priv->inhibit), tray->priv->sig);
     
-    if ( g_signal_handler_is_connected (tray->priv->hal_monitor, tray->priv->sig_1) )
-	g_signal_handler_disconnect (G_OBJECT (tray->priv->hal_monitor), tray->priv->sig_1);
+    if ( g_signal_handler_is_connected (tray->priv->monitor, tray->priv->sig_1) )
+	g_signal_handler_disconnect (G_OBJECT (tray->priv->monitor), tray->priv->sig_1);
 	
-    g_object_unref (tray->priv->hal_monitor);
+    g_object_unref (tray->priv->monitor);
     
     g_object_unref (tray->priv->icon);
 	




More information about the Goodies-commits mailing list