about summary refs log tree commit diff
path: root/src/nm-exported-object.c
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2017-01-25 21:09:50 +0100
committerMichael Biebl <biebl@debian.org>2017-01-25 21:09:50 +0100
commit7f4dff3943c64e1d0e5d13b2ac915088dde165e6 (patch)
treeabfbc3a4102d3bba349b3e25265c2213ad636954 /src/nm-exported-object.c
parentd462f64d6044349b0a4e3581cf2c97bbab7aec97 (diff)
New upstream version 1.6.0 upstream/1.6.0
Diffstat (limited to 'src/nm-exported-object.c')
-rw-r--r--src/nm-exported-object.c47
1 files changed, 43 insertions, 4 deletions
diff --git a/src/nm-exported-object.c b/src/nm-exported-object.c
index a53a3123..cd0789ee 100644
--- a/src/nm-exported-object.c
+++ b/src/nm-exported-object.c
@@ -35,8 +35,16 @@
 #define _ASSERT_NO_EARLY_EXPORT
 #endif
 
+/*****************************************************************************/
+
 static gboolean quitting = FALSE;
 
+/*****************************************************************************/
+
+NM_GOBJECT_PROPERTIES_DEFINE (NMExportedObject,
+	PROP_PATH,
+);
+
 typedef struct {
 	GDBusInterfaceSkeleton *interface;
 	guint property_changed_signal_id;
@@ -677,6 +685,8 @@ nm_exported_object_export (NMExportedObject *self)
 
 	nm_bus_manager_register_object (priv->bus_mgr, (GDBusObjectSkeleton *) self);
 
+	_notify (self, PROP_PATH);
+
 	return priv->path;
 }
 
@@ -715,6 +725,8 @@ nm_exported_object_unexport (NMExportedObject *self)
 	g_clear_pointer (&priv->path, g_free);
 
 	nm_clear_g_source (&priv->notify_idle_id);
+
+	_notify (self, PROP_PATH);
 }
 
 /*****************************************************************************/
@@ -959,6 +971,23 @@ vtype_found:
 /*****************************************************************************/
 
 static void
+get_property (GObject *object, guint prop_id,
+              GValue *value, GParamSpec *pspec)
+{
+	NMExportedObject *self = NM_EXPORTED_OBJECT (object);
+	NMExportedObjectPrivate *priv = NM_EXPORTED_OBJECT_GET_PRIVATE (self);
+
+	switch (prop_id) {
+	case PROP_PATH:
+		g_value_set_string (value, priv->path);
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+		break;
+	}
+}
+
+static void
 nm_exported_object_init (NMExportedObject *self)
 {
 	NMExportedObjectPrivate *priv;
@@ -987,7 +1016,8 @@ constructed (GObject *object)
 static void
 dispose (GObject *object)
 {
-	NMExportedObjectPrivate *priv = NM_EXPORTED_OBJECT_GET_PRIVATE (NM_EXPORTED_OBJECT (object));
+	NMExportedObject *self = NM_EXPORTED_OBJECT (object);
+	NMExportedObjectPrivate *priv = NM_EXPORTED_OBJECT_GET_PRIVATE (self);
 
 	/* Objects should have already been unexported by their owner, unless
 	 * we are quitting, where many objects stick around until exit.
@@ -995,10 +1025,10 @@ dispose (GObject *object)
 	if (!quitting) {
 		if (priv->path) {
 			g_warn_if_reached ();
-			nm_exported_object_unexport (NM_EXPORTED_OBJECT (object));
+			nm_exported_object_unexport (self);
 		}
-	} else
-		g_clear_pointer (&priv->path, g_free);
+	} else if (nm_clear_g_free (&priv->path))
+		_notify (self, PROP_PATH);
 
 	nm_clear_g_source (&priv->notify_idle_id);
 
@@ -1015,4 +1045,13 @@ nm_exported_object_class_init (NMExportedObjectClass *klass)
 	object_class->constructed = constructed;
 	object_class->notify = nm_exported_object_notify;
 	object_class->dispose = dispose;
+	object_class->get_property = get_property;
+
+	obj_properties[PROP_PATH] =
+	    g_param_spec_string (NM_EXPORTED_OBJECT_PATH, "", "",
+	                         NULL,
+	                         G_PARAM_READABLE |
+	                         G_PARAM_STATIC_STRINGS);
+
+	g_object_class_install_properties (object_class, _PROPERTY_ENUMS_LAST, obj_properties);
 }