base-modem: set dbus id as soon as object is created
This commit is contained in:
@@ -61,6 +61,7 @@ static GParamSpec *properties[PROP_LAST];
|
|||||||
struct _MMBaseModemPrivate {
|
struct _MMBaseModemPrivate {
|
||||||
/* The connection to the system bus */
|
/* The connection to the system bus */
|
||||||
GDBusConnection *connection;
|
GDBusConnection *connection;
|
||||||
|
guint dbus_id;
|
||||||
|
|
||||||
/* Modem-wide cancellable. If it ever gets cancelled, no further operations
|
/* Modem-wide cancellable. If it ever gets cancelled, no further operations
|
||||||
* should be done by the modem. */
|
* should be done by the modem. */
|
||||||
@@ -113,6 +114,12 @@ struct _MMBaseModemPrivate {
|
|||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
guint
|
||||||
|
mm_base_modem_get_dbus_id (MMBaseModem *self)
|
||||||
|
{
|
||||||
|
return self->priv->dbus_id;
|
||||||
|
}
|
||||||
|
|
||||||
static gchar *
|
static gchar *
|
||||||
get_hash_key (const gchar *subsys,
|
get_hash_key (const gchar *subsys,
|
||||||
const gchar *name)
|
const gchar *name)
|
||||||
@@ -1518,11 +1525,16 @@ teardown_ports_table (MMBaseModem *self)
|
|||||||
static void
|
static void
|
||||||
mm_base_modem_init (MMBaseModem *self)
|
mm_base_modem_init (MMBaseModem *self)
|
||||||
{
|
{
|
||||||
|
static guint id = 0;
|
||||||
|
|
||||||
/* Initialize private data */
|
/* Initialize private data */
|
||||||
self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
|
self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
|
||||||
MM_TYPE_BASE_MODEM,
|
MM_TYPE_BASE_MODEM,
|
||||||
MMBaseModemPrivate);
|
MMBaseModemPrivate);
|
||||||
|
|
||||||
|
/* Each modem is given a unique id to build its own DBus path */
|
||||||
|
self->priv->dbus_id = id++;
|
||||||
|
|
||||||
/* Setup authorization provider */
|
/* Setup authorization provider */
|
||||||
self->priv->authp = mm_auth_provider_get ();
|
self->priv->authp = mm_auth_provider_get ();
|
||||||
self->priv->authp_cancellable = g_cancellable_new ();
|
self->priv->authp_cancellable = g_cancellable_new ();
|
||||||
|
@@ -105,6 +105,8 @@ struct _MMBaseModemClass {
|
|||||||
|
|
||||||
GType mm_base_modem_get_type (void);
|
GType mm_base_modem_get_type (void);
|
||||||
|
|
||||||
|
guint mm_base_modem_get_dbus_id (MMBaseModem *self);
|
||||||
|
|
||||||
gboolean mm_base_modem_grab_port (MMBaseModem *self,
|
gboolean mm_base_modem_grab_port (MMBaseModem *self,
|
||||||
MMKernelDevice *kernel_device,
|
MMKernelDevice *kernel_device,
|
||||||
MMPortType ptype,
|
MMPortType ptype,
|
||||||
|
@@ -251,8 +251,7 @@ static void
|
|||||||
export_modem (MMDevice *self)
|
export_modem (MMDevice *self)
|
||||||
{
|
{
|
||||||
GDBusConnection *connection = NULL;
|
GDBusConnection *connection = NULL;
|
||||||
static guint32 id = 0;
|
gchar *path;
|
||||||
gchar *path;
|
|
||||||
|
|
||||||
g_assert (MM_IS_BASE_MODEM (self->priv->modem));
|
g_assert (MM_IS_BASE_MODEM (self->priv->modem));
|
||||||
g_assert (G_IS_DBUS_OBJECT_MANAGER (self->priv->object_manager));
|
g_assert (G_IS_DBUS_OBJECT_MANAGER (self->priv->object_manager));
|
||||||
@@ -275,7 +274,7 @@ export_modem (MMDevice *self)
|
|||||||
|
|
||||||
/* No outstanding port tasks, so if the modem is valid we can export it */
|
/* No outstanding port tasks, so if the modem is valid we can export it */
|
||||||
|
|
||||||
path = g_strdup_printf (MM_DBUS_MODEM_PREFIX "/%d", id++);
|
path = g_strdup_printf (MM_DBUS_MODEM_PREFIX "/%d", mm_base_modem_get_dbus_id (self->priv->modem));
|
||||||
g_object_get (self->priv->object_manager,
|
g_object_get (self->priv->object_manager,
|
||||||
"connection", &connection,
|
"connection", &connection,
|
||||||
NULL);
|
NULL);
|
||||||
|
Reference in New Issue
Block a user