[gnome-shell] WeatherClient: set enabled providers after setting a valid location



commit 8e443a2aff446926395af7975834e1a19cdc4e8a
Author: raresvis <rares visalom gmail com>
Date:   Mon Apr 3 02:02:25 2017 +0300

    WeatherClient: set enabled providers after setting a valid location
    
    So far, the GWeatherInfo was given the enabled weather providers
    as a parameter, at construction time. Because of the way in
    which libgweather was designed, setting the providers right from
    the beginning enabled libgweather to use them internally in order
    to update its state. Updating the internal state is only relevant
    when there is a valid location set, which is not guaranteed at the
    time when the GWeatherInfo object is constructed.
    
    In order to fix this, enable no providers at construction time and
    only set valid providers after setting a valid location.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=780404

 js/misc/weather.js |   11 +++++++----
 1 files changed, 7 insertions(+), 4 deletions(-)
---
diff --git a/js/misc/weather.js b/js/misc/weather.js
index 13f29cb..02c0788 100644
--- a/js/misc/weather.js
+++ b/js/misc/weather.js
@@ -54,10 +54,11 @@ const WeatherClient = new Lang.Class({
 
         this._world = GWeather.Location.get_world();
 
-        let providers = GWeather.Provider.METAR |
-                        GWeather.Provider.YR_NO |
-                        GWeather.Provider.OWM;
-        this._weatherInfo = new GWeather.Info({ enabled_providers: providers });
+        this._providers = GWeather.Provider.METAR |
+                          GWeather.Provider.YR_NO |
+                          GWeather.Provider.OWM;
+
+        this._weatherInfo = new GWeather.Info({ enabled_providers: 0 });
         this._weatherInfo.connect_after('updated', () => {
             this._lastUpdate = GLib.DateTime.new_now_local();
             this.emit('changed');
@@ -141,6 +142,8 @@ const WeatherClient = new Lang.Class({
         this._weatherInfo.set_location(location);
         this._locationValid = (location != null);
 
+        this._weatherInfo.set_enabled_providers(location ? this._providers : 0);
+
         if (location)
             this._loadInfo();
         else


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