[gnome-shell/gnome-3-22] network: request periodic scans while the WiFi list is open



commit 3fd65055f93e67fcc3dd595c61c453096908ec09
Author: Dan Williams <dcbw redhat com>
Date:   Tue Jun 21 12:48:44 2016 -0500

    network: request periodic scans while the WiFi list is open
    
    NM upstream would like to reduce periodic scanning, and that means
    that clients should request scans themselves while their WiFi list
    is open.  Similar to the Windows and macOS WiFi dialogs/lists.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=767918

 js/ui/status/network.js |   18 ++++++++++++++----
 1 files changed, 14 insertions(+), 4 deletions(-)
---
diff --git a/js/ui/status/network.js b/js/ui/status/network.js
index fee703b..9f4293a 100644
--- a/js/ui/status/network.js
+++ b/js/ui/status/network.js
@@ -5,6 +5,7 @@ const GObject = imports.gi.GObject;
 const Gio = imports.gi.Gio;
 const Gtk = imports.gi.Gtk;
 const Lang = imports.lang;
+const Mainloop = imports.mainloop;
 const NetworkManager = imports.gi.NetworkManager;
 const NMClient = imports.gi.NMClient;
 const NMGtk = imports.gi.NMGtk;
@@ -752,10 +753,9 @@ const NMWirelessDialog = new Lang.Class({
         this._updateSensitivity();
         this._syncView();
 
-        if (accessPoints.length == 0) {
-            /* If there are no visible access points, request a scan */
-            this._device.request_scan_simple(null);
-        }
+        this._scanTimeoutId = Mainloop.timeout_add_seconds(15, Lang.bind(this, this._onScanTimeout));
+        GLib.Source.set_name_by_id(this._scanTimeoutId, '[gnome-shell] this._onScanTimeout');
+        this._onScanTimeout();
     },
 
     destroy: function() {
@@ -780,9 +780,19 @@ const NMWirelessDialog = new Lang.Class({
             this._airplaneModeChangedId = 0;
         }
 
+        if (this._scanTimeoutId) {
+            Mainloop.source_remove(this._scanTimeoutId);
+            this._scanTimeoutId = 0;
+        }
+
         this.parent();
     },
 
+    _onScanTimeout: function() {
+        this._device.request_scan_simple(null);
+        return GLib.SOURCE_CONTINUE;
+    },
+
     _activeApChanged: function() {
         if (this._activeNetwork)
             this._activeNetwork.item.setActive(false);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]