about summary refs log tree commit diff
path: root/src/devices/adsl/nm-atm-manager.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/adsl/nm-atm-manager.c')
-rw-r--r--src/devices/adsl/nm-atm-manager.c34
1 files changed, 13 insertions, 21 deletions
diff --git a/src/devices/adsl/nm-atm-manager.c b/src/devices/adsl/nm-atm-manager.c
index e8db3596..6f34c02b 100644
--- a/src/devices/adsl/nm-atm-manager.c
+++ b/src/devices/adsl/nm-atm-manager.c
@@ -18,7 +18,7 @@
  * Copyright (C) 2009 - 2013 Red Hat, Inc.
  */
 
-#include <config.h>
+#include "config.h"
 
 #include <string.h>
 #include <gudev/gudev.h>
@@ -28,11 +28,11 @@
 #include "nm-device-adsl.h"
 #include "nm-device-factory.h"
 #include "nm-logging.h"
+#include "nm-glib-compat.h"
 
 typedef struct {
 	GUdevClient *client;
 	GSList *devices;
-	guint start_id;
 } NMAtmManagerPrivate;
 
 #define NM_ATM_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_ATM_MANAGER, NMAtmManagerPrivate))
@@ -46,20 +46,12 @@ G_DEFINE_TYPE_EXTENDED (NMAtmManager, nm_atm_manager, G_TYPE_OBJECT, 0,
 
 /**************************************************************************/
 
-#define PLUGIN_TYPE NM_DEVICE_TYPE_ADSL
-
 G_MODULE_EXPORT NMDeviceFactory *
 nm_device_factory_create (GError **error)
 {
 	return (NMDeviceFactory *) g_object_new (NM_TYPE_ATM_MANAGER, NULL);
 }
 
-G_MODULE_EXPORT NMDeviceType
-nm_device_factory_get_device_type (void)
-{
-	return PLUGIN_TYPE;
-}
-
 /************************************************************************/
 
 static gboolean
@@ -163,9 +155,10 @@ adsl_remove (NMAtmManager *self, GUdevDevice *udev_device)
 	}
 }
 
-static gboolean
-query_devices (NMAtmManager *self)
+static void
+start (NMDeviceFactory *factory)
 {
+	NMAtmManager *self = NM_ATM_MANAGER (factory);
 	NMAtmManagerPrivate *priv = NM_ATM_MANAGER_GET_PRIVATE (self);
 	GUdevEnumerator *enumerator;
 	GList *devices, *iter;
@@ -180,8 +173,6 @@ query_devices (NMAtmManager *self)
 	}
 	g_list_free (devices);
 	g_object_unref (enumerator);
-
-	return G_SOURCE_REMOVE;
 }
 
 static void
@@ -212,6 +203,12 @@ handle_uevent (GUdevClient *client,
 		adsl_remove (self, device);
 }
 
+static NMDeviceType
+get_device_type (NMDeviceFactory *factory)
+{
+	return NM_DEVICE_TYPE_ADSL;
+}
+
 /*********************************************************************/
 
 static void
@@ -222,13 +219,13 @@ nm_atm_manager_init (NMAtmManager *self)
 
 	priv->client = g_udev_client_new (subsys);
 	g_signal_connect (priv->client, "uevent", G_CALLBACK (handle_uevent), self);
-
-	priv->start_id = g_idle_add ((GSourceFunc) query_devices, self);
 }
 
 static void
 device_factory_interface_init (NMDeviceFactory *factory_iface)
 {
+	factory_iface->get_device_type = get_device_type;
+	factory_iface->start = start;
 }
 
 static void
@@ -242,11 +239,6 @@ dispose (GObject *object)
 		g_signal_handlers_disconnect_by_func (priv->client, handle_uevent, self);
 	g_clear_object (&priv->client);
 
-	if (priv->start_id) {
-		g_source_remove (priv->start_id);
-		priv->start_id = 0;
-	}
-
 	for (iter = priv->devices; iter; iter = iter->next)
 		g_object_weak_unref (G_OBJECT (iter->data), device_destroyed, self);
 	g_clear_pointer (&priv->devices, g_slist_free);