zte: only dispose Icera data once

This commit is contained in:
Dan Williams
2011-04-19 11:07:46 -05:00
parent 76bdc658d3
commit 2a5cf2978b

View File

@@ -39,6 +39,7 @@ G_DEFINE_TYPE_EXTENDED (MMModemZte, mm_modem_zte, MM_TYPE_GENERIC_GSM, 0,
#define MM_MODEM_ZTE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MM_TYPE_MODEM_ZTE, MMModemZtePrivate)) #define MM_MODEM_ZTE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), MM_TYPE_MODEM_ZTE, MMModemZtePrivate))
typedef struct { typedef struct {
gboolean disposed;
gboolean init_retried; gboolean init_retried;
guint32 cpms_tries; guint32 cpms_tries;
guint cpms_timeout; guint cpms_timeout;
@@ -667,10 +668,14 @@ dispose (GObject *object)
MMModemZte *self = MM_MODEM_ZTE (object); MMModemZte *self = MM_MODEM_ZTE (object);
MMModemZtePrivate *priv = MM_MODEM_ZTE_GET_PRIVATE (self); MMModemZtePrivate *priv = MM_MODEM_ZTE_GET_PRIVATE (self);
if (priv->cpms_timeout) if (priv->disposed == FALSE) {
g_source_remove (priv->cpms_timeout); priv->disposed = TRUE;
mm_modem_icera_dispose_private (MM_MODEM_ICERA (self)); if (priv->cpms_timeout)
g_source_remove (priv->cpms_timeout);
mm_modem_icera_dispose_private (MM_MODEM_ICERA (self));
}
G_OBJECT_CLASS (mm_modem_zte_parent_class)->dispose (object); G_OBJECT_CLASS (mm_modem_zte_parent_class)->dispose (object);
} }