base-modem: new property to keep the Connection object

This commit is contained in:
Aleksander Morgado
2011-11-22 18:35:56 +01:00
parent d32b006cce
commit 677e04be95
2 changed files with 23 additions and 0 deletions

View File

@@ -44,12 +44,16 @@ enum {
PROP_PLUGIN, PROP_PLUGIN,
PROP_VENDOR_ID, PROP_VENDOR_ID,
PROP_PRODUCT_ID, PROP_PRODUCT_ID,
PROP_CONNECTION,
PROP_LAST PROP_LAST
}; };
static GParamSpec *properties[PROP_LAST]; static GParamSpec *properties[PROP_LAST];
struct _MMBaseModemPrivate { struct _MMBaseModemPrivate {
/* The connection to the system bus */
GDBusConnection *connection;
gchar *device; gchar *device;
gchar *driver; gchar *driver;
gchar *plugin; gchar *plugin;
@@ -535,6 +539,11 @@ set_property (GObject *object,
case PROP_PRODUCT_ID: case PROP_PRODUCT_ID:
self->priv->product_id = g_value_get_uint (value); self->priv->product_id = g_value_get_uint (value);
break; break;
case PROP_CONNECTION:
if (self->priv->connection)
g_object_unref (self->priv->connection);
self->priv->connection = g_value_dup_object (value);
break;
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break; break;
@@ -571,6 +580,9 @@ get_property (GObject *object,
case PROP_PRODUCT_ID: case PROP_PRODUCT_ID:
g_value_set_uint (value, self->priv->product_id); g_value_set_uint (value, self->priv->product_id);
break; break;
case PROP_CONNECTION:
g_value_set_object (value, self->priv->connection);
break;
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break; break;
@@ -606,6 +618,8 @@ dispose (GObject *object)
self->priv->ports = NULL; self->priv->ports = NULL;
} }
g_clear_object (&self->priv->connection);
G_OBJECT_CLASS (mm_base_modem_parent_class)->dispose (object); G_OBJECT_CLASS (mm_base_modem_parent_class)->dispose (object);
} }
@@ -678,5 +692,13 @@ mm_base_modem_class_init (MMBaseModemClass *klass)
0, G_MAXUINT, 0, 0, G_MAXUINT, 0,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY); G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
g_object_class_install_property (object_class, PROP_PRODUCT_ID, properties[PROP_PRODUCT_ID]); g_object_class_install_property (object_class, PROP_PRODUCT_ID, properties[PROP_PRODUCT_ID]);
properties[PROP_CONNECTION] =
g_param_spec_object (MM_BASE_MODEM_CONNECTION,
"Connection",
"GDBus connection to the system bus.",
G_TYPE_DBUS_CONNECTION,
G_PARAM_READWRITE);
g_object_class_install_property (object_class, PROP_CONNECTION, properties[PROP_CONNECTION]);
} }

View File

@@ -39,6 +39,7 @@ typedef struct _MMBaseModem MMBaseModem;
typedef struct _MMBaseModemClass MMBaseModemClass; typedef struct _MMBaseModemClass MMBaseModemClass;
typedef struct _MMBaseModemPrivate MMBaseModemPrivate; typedef struct _MMBaseModemPrivate MMBaseModemPrivate;
#define MM_BASE_MODEM_CONNECTION "base-modem-connection"
#define MM_BASE_MODEM_MAX_TIMEOUTS "base-modem-max-timeouts" #define MM_BASE_MODEM_MAX_TIMEOUTS "base-modem-max-timeouts"
#define MM_BASE_MODEM_VALID "base-modem-valid" #define MM_BASE_MODEM_VALID "base-modem-valid"
#define MM_BASE_MODEM_DEVICE "base-modem-device" #define MM_BASE_MODEM_DEVICE "base-modem-device"