modem: fix WWAN hardware enable state tracking (rh #591622)
This commit is contained in:
@@ -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 ());
|
||||
}
|
||||
|
@@ -36,6 +36,8 @@
|
||||
|
||||
#define NM_DEVICE_MODEM_MODEM "modem"
|
||||
|
||||
#define NM_DEVICE_MODEM_ENABLE_CHANGED "enable-changed"
|
||||
|
||||
typedef struct {
|
||||
NMDevice parent;
|
||||
} NMDeviceModem;
|
||||
|
@@ -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);
|
||||
|
||||
|
Reference in New Issue
Block a user