diff --git a/src/nm-device-modem.c b/src/nm-device-modem.c index 3ba26ddcd..441f92cec 100644 --- a/src/nm-device-modem.c +++ b/src/nm-device-modem.c @@ -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 ()); } diff --git a/src/nm-device-modem.h b/src/nm-device-modem.h index 40e89d4b7..c6ef4d218 100644 --- a/src/nm-device-modem.h +++ b/src/nm-device-modem.h @@ -36,6 +36,8 @@ #define NM_DEVICE_MODEM_MODEM "modem" +#define NM_DEVICE_MODEM_ENABLE_CHANGED "enable-changed" + typedef struct { NMDevice parent; } NMDeviceModem; diff --git a/src/nm-manager.c b/src/nm-manager.c index 965556728..1bc9e5a46 100644 --- a/src/nm-manager.c +++ b/src/nm-manager.c @@ -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);