summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBeniamino Galvani <bgalvani@redhat.com>2017-01-03 15:41:58 +0100
committerBeniamino Galvani <bgalvani@redhat.com>2017-01-03 15:41:58 +0100
commitec1a47c29b137daa96beac4b87b9a80eeca776a7 (patch)
tree0ba99dd91890260b28dfb1c98230d0aa360ea5da
parentad9fb7b56634501bf9c570d9f14e7716df447c6f (diff)
parent7ff89d6fab6fefc02b9148e37831278183563a64 (diff)
downloadnetwork-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.c15
-rw-r--r--src/applet.c20
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