From 384e01b3684e14a2de8bdfa1c682b0737ee6540f Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Tue, 21 Jun 2016 12:48:44 -0500 Subject: [PATCH] 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 file changed, 14 insertions(+), 4 deletions(-) diff --git a/js/ui/status/network.js b/js/ui/status/network.js index fee703bed..9f4293ab7 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);