summaryrefslogtreecommitdiff
path: root/apps/gui/skin_engine/skin_parser.c
diff options
context:
space:
mode:
authorThomas Martitz <kugel@rockbox.org>2013-05-14 07:03:44 +0200
committerThomas Martitz <kugel@rockbox.org>2013-06-09 17:39:08 +0200
commit58b4e71d3244b3c433e1fd3b494d17379bf57c48 (patch)
tree69530502e78b93fd09ec3db3faa59d91b765f438 /apps/gui/skin_engine/skin_parser.c
parent280a0eb27ee0f9661c44e9230f7f59b2551b18af (diff)
downloadrockbox-58b4e71d3244b3c433e1fd3b494d17379bf57c48.tar.gz
rockbox-58b4e71d3244b3c433e1fd3b494d17379bf57c48.zip
skin_engine: Fix albumart logic on skin reloading.
This logic checks whether the skin's albumart dimensions differ from the previous skin to force rebuffering if necessary. This was broken since a while as the necessary information was reset. Change-Id: I3b9f3a819c6af202af8ad66c13742f704ce45ab1 Reviewed-on: http://gerrit.rockbox.org/476 Tested-by: Thomas Martitz <kugel@rockbox.org> Reviewed-by: Thomas Martitz <kugel@rockbox.org>
Diffstat (limited to 'apps/gui/skin_engine/skin_parser.c')
-rw-r--r--apps/gui/skin_engine/skin_parser.c26
1 files changed, 6 insertions, 20 deletions
diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c
index a0386c5529..3238c48c63 100644
--- a/apps/gui/skin_engine/skin_parser.c
+++ b/apps/gui/skin_engine/skin_parser.c
@@ -2286,19 +2286,6 @@ bool skin_data_load(enum screen_type screen, struct wps_data *wps_data,
2286 char *wps_buffer = NULL; 2286 char *wps_buffer = NULL;
2287 if (!wps_data || !buf) 2287 if (!wps_data || !buf)
2288 return false; 2288 return false;
2289#ifdef HAVE_ALBUMART
2290 int status;
2291 struct mp3entry *curtrack;
2292 long offset;
2293 struct skin_albumart old_aa = {.state = WPS_ALBUMART_NONE};
2294 struct skin_albumart *aa = SKINOFFSETTOPTR(skin_buffer, wps_data->albumart);
2295 if (aa)
2296 {
2297 old_aa.state = aa->state;
2298 old_aa.height = aa->height;
2299 old_aa.width = aa->width;
2300 }
2301#endif
2302#ifdef HAVE_LCD_BITMAP 2289#ifdef HAVE_LCD_BITMAP
2303 int i; 2290 int i;
2304 for (i=0;i<MAXUSERFONTS;i++) 2291 for (i=0;i<MAXUSERFONTS;i++)
@@ -2401,17 +2388,16 @@ bool skin_data_load(enum screen_type screen, struct wps_data *wps_data,
2401 } 2388 }
2402#endif 2389#endif
2403#if defined(HAVE_ALBUMART) && !defined(__PCTOOL__) 2390#if defined(HAVE_ALBUMART) && !defined(__PCTOOL__)
2404 status = audio_status(); 2391 int status = audio_status();
2405 if (status & AUDIO_STATUS_PLAY) 2392 if (status & AUDIO_STATUS_PLAY)
2406 { 2393 {
2394 /* last_albumart_{width,height} is either both 0 or valid AA dimensions */
2407 struct skin_albumart *aa = SKINOFFSETTOPTR(skin_buffer, wps_data->albumart); 2395 struct skin_albumart *aa = SKINOFFSETTOPTR(skin_buffer, wps_data->albumart);
2408 if (aa && ((aa->state && !old_aa.state) || 2396 if (aa && (aa->state != WPS_ALBUMART_NONE ||
2409 (aa->state && 2397 (((wps_data->last_albumart_height != aa->height) ||
2410 (((old_aa.height != aa->height) || 2398 (wps_data->last_albumart_width != aa->width)))))
2411 (old_aa.width != aa->width))))))
2412 { 2399 {
2413 curtrack = audio_current_track(); 2400 long offset = audio_current_track()->offset;
2414 offset = curtrack->offset;
2415 audio_stop(); 2401 audio_stop();
2416 if (!(status & AUDIO_STATUS_PAUSE)) 2402 if (!(status & AUDIO_STATUS_PAUSE))
2417 audio_play(offset); 2403 audio_play(offset);