libnm: let NMObject create all D-Bus proxies
Add _nm_object_class_add_interface(), for declaring that a class implements a particular interface, and then have NMObject create the corresponding proxies itself. (The subclass can get a copy with _nm_object_get_proxy() if it needs it for something). (In GDBus, creating a proxy is a heavier operation than in dbus-glib, so we'll need to create the proxies asynchronously. Moving the creation to NMObject makes that easier since we can do it as part of the existing init/init_async.)
This commit is contained in:
@@ -39,8 +39,6 @@ G_DEFINE_TYPE (NMAccessPoint, nm_access_point, NM_TYPE_OBJECT)
|
||||
#define NM_ACCESS_POINT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_ACCESS_POINT, NMAccessPointPrivate))
|
||||
|
||||
typedef struct {
|
||||
DBusGProxy *proxy;
|
||||
|
||||
NM80211ApFlags flags;
|
||||
NM80211ApSecurityFlags wpa_flags;
|
||||
NM80211ApSecurityFlags rsn_flags;
|
||||
@@ -361,16 +359,6 @@ nm_access_point_init (NMAccessPoint *ap)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
dispose (GObject *object)
|
||||
{
|
||||
NMAccessPointPrivate *priv = NM_ACCESS_POINT_GET_PRIVATE (object);
|
||||
|
||||
g_clear_object (&priv->proxy);
|
||||
|
||||
G_OBJECT_CLASS (nm_access_point_parent_class)->dispose (object);
|
||||
}
|
||||
|
||||
static void
|
||||
finalize (GObject *object)
|
||||
{
|
||||
@@ -449,9 +437,8 @@ init_dbus (NMObject *object)
|
||||
|
||||
NM_OBJECT_CLASS (nm_access_point_parent_class)->init_dbus (object);
|
||||
|
||||
priv->proxy = _nm_object_new_proxy (object, NULL, NM_DBUS_INTERFACE_ACCESS_POINT);
|
||||
_nm_object_register_properties (object,
|
||||
priv->proxy,
|
||||
NM_DBUS_INTERFACE_ACCESS_POINT,
|
||||
property_info);
|
||||
}
|
||||
|
||||
@@ -464,9 +451,10 @@ nm_access_point_class_init (NMAccessPointClass *ap_class)
|
||||
|
||||
g_type_class_add_private (ap_class, sizeof (NMAccessPointPrivate));
|
||||
|
||||
_nm_object_class_add_interface (nm_object_class, NM_DBUS_INTERFACE_ACCESS_POINT);
|
||||
|
||||
/* virtual methods */
|
||||
object_class->get_property = get_property;
|
||||
object_class->dispose = dispose;
|
||||
object_class->finalize = finalize;
|
||||
|
||||
nm_object_class->init_dbus = init_dbus;
|
||||
|
Reference in New Issue
Block a user