[mythtv-commits] Ticket #560: Increase mythweather load-up time significantly

MythTV mythtv at cvs.mythtv.org
Tue Nov 1 20:11:46 EST 2005

#560: Increase mythweather load-up time significantly
 Reporter:  mythtv at hburch.com  |       Owner:  ijr 
     Type:  enhancement        |      Status:  new 
 Priority:  minor              |   Milestone:      
Component:  mythweather        |     Version:  head
 Severity:  medium             |  -------------------------------+--------------------------------------------
 Currently, weather information is downloaded on demand.  This makes the
 start-up time quite expansive (about 8 seconds on my machine).

 This "patch" (more on that later) creates a new program: mythweatherupdate
 that downloads the weather data and stores it in GetConfDir()/MythWeather.
 Mythweather, instead of needing to download the data when starting-up, can
 utilize the cache when it exists.  This decreases the load time for
 weather data from 5-10 seconds under a second.  Backwards compatability is
 maintained (that is, if mythweatherupdate is not periodically run, weather
 data will still be displayed).

 == Details ==

 A new class, WeatherData, was created to hold the weather data.  This
 allows mythweatherupdate to access the data without needing to create a
 Weather object, which would attempt to create UI objects.

 Backward compatability is maintained.  If mythweatherupdate is not
 periodically run, for whatever reason, mythweather caches the weather data
 it downloads.  If the cache is less than 90 minutes old, it will be
 reused.  Otherwise, the data is downloaded and the cache refreshed.  90
 minutes was chosen for compatibility with hourly updates.

 Another change is that the animated radar image is created lazily.  That
 is, it is not created until the page changes to
 AnimatedImage->GetContext().  The creation of this image takes a noticable
 amount of time on my machine (~0.7 seconds), making the load time
 significantly longer.  If you passively watch mythweather, this time is
 difficult to notice (it stays on the screen before the radar image
 slightly longer), but it can be noticable if you use left/right to change
 screen.  In any case, you now pay the lag only if you have to.

 Because this is such a major rewrite, the "patch" is actually a tar ball
 of all the source code.  Changes to mythweather through patch set 7527
 (currently, the last change) are included.

 == Caveats ==

 This is a relatively large rewrite of mythweather.  Although little code
 in the mythweather proper changed, it has been reshuffled and one class
 between two classes.  I tried to be conservative in changing things, which
 has some consequences (one of which is that, unfortunately, resulted in
 Weather and WeatherData being friends).

 For cleanness, mythweatherupdate is dynamically linked against
 libmythweather.so. This means that it must be invoked with the plugin
 directory in LD_LIBRARY_PATH
 (LD_LIBRARY_PATH=/usr/local/lib/mythtv/plugins mythweatherupdate).  The
 old way was to recompile the source files in mythweather directly into
 mythweatherupdate.  It would be easy to change this back, but I was not
 happy with that.  The other alternative would be to soft link to
 libmythweather.so from $PREFIX/lib.  Not difficult to change.  Uncertain
 which would be most appealing to the maintainers (they may have a better
 idea that those), I left it as this, which is easy to change to either of
 the other two options.

 == Conclusions ==

 This enhancement "patch" makes mythweather almost instataneous to access,
 enabling one to quickly check the weather.

 (Sorry for the long ticket)

Ticket URL: <http://svn.mythtv.org/trac/ticket/560>
MythTV <http://www.mythtv.org/>

More information about the mythtv-commits mailing list