[gnome-shell] weather: Handle GeoClue not responding
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] weather: Handle GeoClue not responding
- Date: Sat, 11 Mar 2017 19:53:31 +0000 (UTC)
commit ce5875f365b5c615a4bc36479cbd02736703688b
Author: Sebastian Keller <sebastian-keller gmx de>
Date: Sat Mar 11 13:46:10 2017 +0100
weather: Handle GeoClue not responding
If GeoClue is not responding for some reason, the callback of
Geoclue.Simple.new would not get called, meaning that _gclueFailed
remains false. This is preventing the fallback to the most recently
used location in gnome-weather, because it requires _gclueFailed to be
true (or auto-location to be disabled). So neither code path sets a
location and the libgweather default (New York City) is being used
instead.
https://bugzilla.gnome.org/show_bug.cgi?id=779898
js/misc/weather.js | 20 +++++++++-----------
1 files changed, 9 insertions(+), 11 deletions(-)
---
diff --git a/js/misc/weather.js b/js/misc/weather.js
index 2ea90d3..36346ad 100644
--- a/js/misc/weather.js
+++ b/js/misc/weather.js
@@ -24,7 +24,7 @@ const WeatherClient = new Lang.Class({
this._gclueService = null;
this._gclueStarted = false;
- this._gclueFailed = false;
+ this._gclueStarting = false;
this._gclueLocationChangedId = 0;
this._world = GWeather.Location.get_world();
@@ -125,21 +125,21 @@ const WeatherClient = new Lang.Class({
},
_startGClueService: function() {
- if (this._gclueStarted)
+ if (this._gclueStarting)
return;
- this._gclueStarted = true;
+ this._gclueStarting = true;
+
Geoclue.Simple.new('org.gnome.Shell', Geoclue.AccuracyLevel.CITY, null,
(o, res) => {
try {
this._gclueService = Geoclue.Simple.new_finish(res);
} catch(e) {
log('Failed to connect to Geoclue2 service: ' + e.message);
- this._gclueFailed = true;
this._setLocation(this._mostRecentLocation);
return;
}
-
+ this._gclueStarted = true;
this._gclueService.get_client().distance_threshold = 100;
this._updateLocationMonitoring();
});
@@ -163,12 +163,10 @@ const WeatherClient = new Lang.Class({
this._updateLocationMonitoring();
- if (this._useAutoLocation) {
- if (!this._gclueStarted)
- this._startGClueService();
- } else {
+ if (this._useAutoLocation)
+ this._startGClueService();
+ else
this._setLocation(this._mostRecentLocation);
- }
},
_onLocationsChanged: function(settings, key) {
@@ -183,7 +181,7 @@ const WeatherClient = new Lang.Class({
this._mostRecentLocation = mostRecentLocation;
- if (!this._useAutoLocation || this._gclueFailed)
+ if (!this._useAutoLocation || !this._gclueStarted)
this._setLocation(this._mostRecentLocation);
}
});
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]