modem: fix WWAN hardware enable state tracking (rh #591622)

This commit is contained in:
Dan Williams
2010-05-24 17:07:46 -07:00
parent 6221afc790
commit 2e92d84ef0
3 changed files with 16 additions and 4 deletions

View File

@@ -46,6 +46,7 @@ enum {
enum {
PPP_STATS,
ENABLE_CHANGED,
LAST_SIGNAL
};
static guint signals[LAST_SIGNAL] = { 0 };
@@ -158,6 +159,8 @@ modem_enabled_cb (NMModem *modem, GParamSpec *pspec, gpointer user_data)
NMDeviceModemPrivate *priv = NM_DEVICE_MODEM_GET_PRIVATE (self);
real_set_enabled (NM_DEVICE_INTERFACE (self), nm_modem_get_mm_enabled (priv->modem));
g_signal_emit (G_OBJECT (self), signals[ENABLE_CHANGED], 0);
}
/*****************************************************************************/
@@ -453,6 +456,15 @@ nm_device_modem_class_init (NMDeviceModemClass *mclass)
G_TYPE_NONE, 2,
G_TYPE_UINT, G_TYPE_UINT);
signals[ENABLE_CHANGED] =
g_signal_new (NM_DEVICE_MODEM_ENABLE_CHANGED,
G_OBJECT_CLASS_TYPE (object_class),
G_SIGNAL_RUN_FIRST,
0,
NULL, NULL,
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
dbus_g_object_type_install_info (G_TYPE_FROM_CLASS (mclass),
nm_modem_get_serial_dbus_info ());
}

View File

@@ -36,6 +36,8 @@
#define NM_DEVICE_MODEM_MODEM "modem"
#define NM_DEVICE_MODEM_ENABLE_CHANGED "enable-changed"
typedef struct {
NMDevice parent;
} NMDeviceModem;

View File

@@ -1459,9 +1459,7 @@ manager_ipw_rfkill_state_changed (NMDeviceWifi *device,
}
static void
manager_modem_enabled_changed (NMModem *device,
GParamSpec *pspec,
gpointer user_data)
manager_modem_enabled_changed (NMModem *device, gpointer user_data)
{
nm_manager_rfkill_update (NM_MANAGER (user_data), RFKILL_TYPE_WWAN);
}
@@ -1515,7 +1513,7 @@ add_device (NMManager *self, NMDevice *device)
nm_device_interface_set_enabled (NM_DEVICE_INTERFACE (device),
priv->radio_states[RFKILL_TYPE_WLAN].enabled);
} else if (NM_IS_DEVICE_MODEM (device)) {
g_signal_connect (device, "notify::" NM_MODEM_ENABLED,
g_signal_connect (device, NM_DEVICE_MODEM_ENABLE_CHANGED,
G_CALLBACK (manager_modem_enabled_changed),
self);