diff options
author | Beniamino Galvani <bgalvani@redhat.com> | 2017-01-03 15:41:58 +0100 |
---|---|---|
committer | Beniamino Galvani <bgalvani@redhat.com> | 2017-01-03 15:41:58 +0100 |
commit | ec1a47c29b137daa96beac4b87b9a80eeca776a7 (patch) | |
tree | 0ba99dd91890260b28dfb1c98230d0aa360ea5da | |
parent | ad9fb7b56634501bf9c570d9f14e7716df447c6f (diff) | |
parent | 7ff89d6fab6fefc02b9148e37831278183563a64 (diff) | |
download | network-manager-applet-ec1a47c29b137daa96beac4b87b9a80eeca776a7.tar.gz |
merge: branch 'bg/mm-device-race-bgo776384'
https://bugzilla.gnome.org/show_bug.cgi?id=776384
-rw-r--r-- | src/applet-device-broadband.c | 15 | ||||
-rw-r--r-- | src/applet.c | 20 |
2 files changed, 30 insertions, 5 deletions
diff --git a/src/applet-device-broadband.c b/src/applet-device-broadband.c index 6e7952ca..4929d34a 100644 --- a/src/applet-device-broadband.c +++ b/src/applet-device-broadband.c @@ -30,6 +30,8 @@ #include "mobile-helpers.h" #include "mb-menu-item.h" +#define BROADBAND_INFO_TAG "devinfo" + typedef struct { NMApplet *applet; NMDevice *device; @@ -470,7 +472,7 @@ get_secrets (SecretsRequest *req, error)) return FALSE; - devinfo = g_object_get_data (G_OBJECT (device), "devinfo"); + devinfo = g_object_get_data (G_OBJECT (device), BROADBAND_INFO_TAG); if (!devinfo) { g_set_error (error, NM_SECRET_AGENT_ERROR, @@ -637,7 +639,7 @@ get_icon (NMDevice *device, return; } - info = g_object_get_data (G_OBJECT (device), "devinfo"); + info = g_object_get_data (G_OBJECT (device), BROADBAND_INFO_TAG); if (!info) { g_warning ("ModemManager is not available for modem at %s", nm_device_get_udi (device)); @@ -720,7 +722,7 @@ add_menu_item (NMDevice *device, GtkWidget *item; int i; - info = g_object_get_data (G_OBJECT (device), "devinfo"); + info = g_object_get_data (G_OBJECT (device), BROADBAND_INFO_TAG); if (!info) { g_warning ("ModemManager is not available for modem at %s", nm_device_get_udi (device)); @@ -1007,7 +1009,10 @@ device_added (NMDevice *device, if (!udi) return; - if (!applet->mm1) { + if (g_object_get_data (G_OBJECT (modem), BROADBAND_INFO_TAG)) + return; + + if (!applet->mm1_running) { g_warning ("Cannot grab information for modem at %s: No ModemManager support", nm_device_get_udi (device)); return; @@ -1057,7 +1062,7 @@ device_added (NMDevice *device, /* Store device info */ g_object_set_data_full (G_OBJECT (modem), - "devinfo", + BROADBAND_INFO_TAG, info, (GDestroyNotify)broadband_device_info_free); } diff --git a/src/applet.c b/src/applet.c index f3a4a1e2..b702f8e7 100644 --- a/src/applet.c +++ b/src/applet.c @@ -2372,6 +2372,26 @@ mm1_name_owner_changed_cb (GDBusObjectManagerClient *mm1, name_owner = g_dbus_object_manager_client_get_name_owner (mm1); applet->mm1_running = !!name_owner; g_free (name_owner); + + if (applet->mm1_running) { + const GPtrArray *devices; + NMADeviceClass *dclass; + NMDevice *device; + int i; + + devices = nm_client_get_devices (applet->nm_client); + for (i = 0; devices && (i < devices->len); i++) { + device = NM_DEVICE (g_ptr_array_index (devices, i)); + if (NM_IS_DEVICE_MODEM (device)) { + dclass = get_device_class (device, applet); + if (dclass && dclass->device_added) + dclass->device_added (device, applet); + + applet_schedule_update_icon (applet); + applet_schedule_update_menu (applet); + } + } + } } static void |