diff options
author | Brandon Low <lostlogic@rockbox.org> | 2006-04-15 09:19:49 +0000 |
---|---|---|
committer | Brandon Low <lostlogic@rockbox.org> | 2006-04-15 09:19:49 +0000 |
commit | bf397b5635fb619cd782e9496059fb5082b3ae40 (patch) | |
tree | 4ea881dbf4410a07b58179c13725c1f92762ae4b /apps | |
parent | 521a3595682db5f08b9a686841387eb3dc265cb8 (diff) | |
download | rockbox-bf397b5635fb619cd782e9496059fb5082b3ae40.tar.gz rockbox-bf397b5635fb619cd782e9496059fb5082b3ae40.zip |
Remove an unneeded WPS update signal. Make the codec thread more polite about requesting buffering. Prevent more Codec failure pops when the codec was _asked_ to stop.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9674 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r-- | apps/playback.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/apps/playback.c b/apps/playback.c index cb2cbac82e..1aa595b131 100644 --- a/apps/playback.c +++ b/apps/playback.c | |||
@@ -522,8 +522,9 @@ size_t codec_filebuf_callback(void *ptr, size_t size) | |||
522 | 522 | ||
523 | /* Let the disk buffer catch fill until enough data is available */ | 523 | /* Let the disk buffer catch fill until enough data is available */ |
524 | while (copy_n > cur_ti->available) { | 524 | while (copy_n > cur_ti->available) { |
525 | queue_post(&audio_queue, Q_AUDIO_FILL_BUFFER, 0); | 525 | if (!filling) |
526 | yield(); | 526 | queue_post(&audio_queue, Q_AUDIO_FILL_BUFFER, 0); |
527 | sleep(1); | ||
527 | if (ci.stop_codec || ci.new_track) | 528 | if (ci.stop_codec || ci.new_track) |
528 | return 0; | 529 | return 0; |
529 | } | 530 | } |
@@ -604,8 +605,9 @@ void* codec_request_buffer_callback(size_t *realsize, size_t reqsize) | |||
604 | } | 605 | } |
605 | 606 | ||
606 | while (copy_n > cur_ti->available) { | 607 | while (copy_n > cur_ti->available) { |
607 | queue_post(&audio_queue, Q_AUDIO_FILL_BUFFER, 0); | 608 | if (!filling) |
608 | yield(); | 609 | queue_post(&audio_queue, Q_AUDIO_FILL_BUFFER, 0); |
610 | sleep(1); | ||
609 | if (ci.stop_codec || ci.new_track) { | 611 | if (ci.stop_codec || ci.new_track) { |
610 | *realsize = 0; | 612 | *realsize = 0; |
611 | return NULL; | 613 | return NULL; |
@@ -1927,7 +1929,6 @@ static void initiate_track_change(long direction) | |||
1927 | { | 1929 | { |
1928 | playlist_end = false; | 1930 | playlist_end = false; |
1929 | ci.new_track += direction; | 1931 | ci.new_track += direction; |
1930 | track_changed = true; | ||
1931 | } | 1932 | } |
1932 | 1933 | ||
1933 | static void initiate_dir_change(long direction) | 1934 | static void initiate_dir_change(long direction) |
@@ -2101,8 +2102,12 @@ void codec_thread(void) | |||
2101 | } | 2102 | } |
2102 | 2103 | ||
2103 | if (audio_codec_loaded) | 2104 | if (audio_codec_loaded) |
2104 | if (!playing && ci.stop_codec) | 2105 | if (ci.stop_codec) |
2105 | pcmbuf_play_stop(); | 2106 | { |
2107 | status = CODEC_OK; | ||
2108 | if (!playing) | ||
2109 | pcmbuf_play_stop(); | ||
2110 | } | ||
2106 | 2111 | ||
2107 | audio_codec_loaded = false; | 2112 | audio_codec_loaded = false; |
2108 | 2113 | ||