summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorHardeep Sidhu <dyp@pobox.com>2005-07-04 22:50:57 +0000
committerHardeep Sidhu <dyp@pobox.com>2005-07-04 22:50:57 +0000
commit839dbcaed7ea135dcc0812de76f9ff5c1dc924f5 (patch)
tree2a9ea28b5da29ff2749f0b4bb3be059eafc98fa4 /apps
parent3fd775b7d15c9c5133c68ba45caf8bfc78cadfa1 (diff)
downloadrockbox-839dbcaed7ea135dcc0812de76f9ff5c1dc924f5.tar.gz
rockbox-839dbcaed7ea135dcc0812de76f9ff5c1dc924f5.zip
Moved resume info updating to the mpeg/playback threads so that it's saved even when not in the WPS
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7018 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/playback.c8
-rw-r--r--apps/playlist.c25
-rw-r--r--apps/playlist.h2
-rw-r--r--apps/wps.c16
4 files changed, 35 insertions, 16 deletions
diff --git a/apps/playback.c b/apps/playback.c
index 92ef340734..7565cbcdf5 100644
--- a/apps/playback.c
+++ b/apps/playback.c
@@ -1320,9 +1320,12 @@ void audio_thread(void)
1320 ci.seek_time = 0; 1320 ci.seek_time = 0;
1321 pcm_crossfade_init(); 1321 pcm_crossfade_init();
1322 audio_play_start((int)ev.data); 1322 audio_play_start((int)ev.data);
1323 playlist_update_resume_info(audio_current_track());
1323 break ; 1324 break ;
1324 1325
1325 case AUDIO_STOP: 1326 case AUDIO_STOP:
1327 if (playing)
1328 playlist_update_resume_info(audio_current_track());
1326 audio_stop_playback(); 1329 audio_stop_playback();
1327 break ; 1330 break ;
1328 1331
@@ -1342,6 +1345,7 @@ void audio_thread(void)
1342 case AUDIO_TRACK_CHANGED: 1345 case AUDIO_TRACK_CHANGED:
1343 if (track_changed_callback) 1346 if (track_changed_callback)
1344 track_changed_callback(cur_ti); 1347 track_changed_callback(cur_ti);
1348 playlist_update_resume_info(audio_current_track());
1345 break ; 1349 break ;
1346 1350
1347 case AUDIO_CODEC_DONE: 1351 case AUDIO_CODEC_DONE:
@@ -1357,6 +1361,10 @@ void audio_thread(void)
1357 usb_wait_for_disconnect(&audio_queue); 1361 usb_wait_for_disconnect(&audio_queue);
1358 break ; 1362 break ;
1359#endif 1363#endif
1364 case SYS_TIMEOUT:
1365 if (playing)
1366 playlist_update_resume_info(audio_current_track());
1367 break;
1360 } 1368 }
1361 } 1369 }
1362} 1370}
diff --git a/apps/playlist.c b/apps/playlist.c
index 304a511c37..91ca1f640a 100644
--- a/apps/playlist.c
+++ b/apps/playlist.c
@@ -2010,6 +2010,31 @@ int playlist_get_resume_info(int *resume_index)
2010 return 0; 2010 return 0;
2011} 2011}
2012 2012
2013/* Update resume info for current playing song. Returns -1 on error. */
2014int playlist_update_resume_info(const struct mp3entry* id3)
2015{
2016 struct playlist_info* playlist = &current_playlist;
2017
2018 if (id3)
2019 {
2020 if (global_settings.resume_index != playlist->index ||
2021 global_settings.resume_offset != id3->offset)
2022 {
2023 global_settings.resume_index = playlist->index;
2024 global_settings.resume_offset = id3->offset;
2025 settings_save();
2026 }
2027 }
2028 else
2029 {
2030 global_settings.resume_index = -1;
2031 global_settings.resume_offset = -1;
2032 settings_save();
2033 }
2034
2035 return 0;
2036}
2037
2013/* Returns index of current playing track for display purposes. This value 2038/* Returns index of current playing track for display purposes. This value
2014 should not be used for resume purposes as it doesn't represent the actual 2039 should not be used for resume purposes as it doesn't represent the actual
2015 index into the playlist */ 2040 index into the playlist */
diff --git a/apps/playlist.h b/apps/playlist.h
index 5346cc8663..eee8bf5945 100644
--- a/apps/playlist.h
+++ b/apps/playlist.h
@@ -23,6 +23,7 @@
23#include <stdbool.h> 23#include <stdbool.h>
24#include "file.h" 24#include "file.h"
25#include "kernel.h" 25#include "kernel.h"
26#include "id3.h"
26 27
27/* playlist data */ 28/* playlist data */
28 29
@@ -79,6 +80,7 @@ bool playlist_check(int steps);
79char *playlist_peek(int steps); 80char *playlist_peek(int steps);
80int playlist_next(int steps); 81int playlist_next(int steps);
81int playlist_get_resume_info(int *resume_index); 82int playlist_get_resume_info(int *resume_index);
83int playlist_update_resume_info(const struct mp3entry* id3);
82int playlist_get_display_index(void); 84int playlist_get_display_index(void);
83int playlist_amount(void); 85int playlist_amount(void);
84 86
diff --git a/apps/wps.c b/apps/wps.c
index e6d7036d6f..70af303bf0 100644
--- a/apps/wps.c
+++ b/apps/wps.c
@@ -250,22 +250,6 @@ static bool update(void)
250 250
251 status_draw(false); 251 status_draw(false);
252 252
253 /* save resume data */
254 if ( id3 &&
255 (global_settings.resume_offset != id3->offset || track_changed)) {
256
257 if (!playlist_get_resume_info(&global_settings.resume_index))
258 {
259 global_settings.resume_offset = id3->offset;
260 settings_save();
261 }
262 }
263 else if ( !id3 && track_changed ) {
264 global_settings.resume_index = -1;
265 global_settings.resume_offset = -1;
266 settings_save();
267 }
268
269 return retcode; 253 return retcode;
270} 254}
271 255