diff options
author | Steve Bavin <pondlife@pondlife.me> | 2006-10-15 11:03:26 +0000 |
---|---|---|
committer | Steve Bavin <pondlife@pondlife.me> | 2006-10-15 11:03:26 +0000 |
commit | 10befc8e6ed2129143af79cfcfbc0fd5a4fe3d85 (patch) | |
tree | e291e383781082b758362cae10a7652b628213df /apps/playback.c | |
parent | b89b5ba2ee31bd351710670cf5ecc5aa8beb95f3 (diff) | |
download | rockbox-10befc8e6ed2129143af79cfcfbc0fd5a4fe3d85.tar.gz rockbox-10befc8e6ed2129143af79cfcfbc0fd5a4fe3d85.zip |
Don't unboost CPU in an ISR
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11224 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/playback.c')
-rw-r--r-- | apps/playback.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/apps/playback.c b/apps/playback.c index 8c480c46c7..44aa8696fc 100644 --- a/apps/playback.c +++ b/apps/playback.c | |||
@@ -203,7 +203,7 @@ static unsigned char *iram_buf[2]; | |||
203 | static unsigned char *dram_buf[2]; | 203 | static unsigned char *dram_buf[2]; |
204 | 204 | ||
205 | /* Step count to the next unbuffered track. */ | 205 | /* Step count to the next unbuffered track. */ |
206 | static int last_peek_offset; | 206 | static int last_peek_offset; /* Audio thread */ |
207 | 207 | ||
208 | /* Track information (count in file buffer, read/write indexes for | 208 | /* Track information (count in file buffer, read/write indexes for |
209 | track ring structure. */ | 209 | track ring structure. */ |
@@ -674,7 +674,7 @@ void audio_preinit(void) | |||
674 | track_buffer_callback = NULL; | 674 | track_buffer_callback = NULL; |
675 | track_unbuffer_callback = NULL; | 675 | track_unbuffer_callback = NULL; |
676 | track_changed_callback = NULL; | 676 | track_changed_callback = NULL; |
677 | /* Just to prevent CUR_TI never be anything random. */ | 677 | /* Just to prevent CUR_TI from being anything random. */ |
678 | track_ridx = 0; | 678 | track_ridx = 0; |
679 | 679 | ||
680 | mutex_init(&mutex_codecthread); | 680 | mutex_init(&mutex_codecthread); |
@@ -1249,7 +1249,6 @@ static void codec_set_offset_callback(size_t value) | |||
1249 | static void codec_advance_buffer_counters(size_t amount) | 1249 | static void codec_advance_buffer_counters(size_t amount) |
1250 | { | 1250 | { |
1251 | buf_ridx = RINGBUF_ADD(buf_ridx, amount); | 1251 | buf_ridx = RINGBUF_ADD(buf_ridx, amount); |
1252 | |||
1253 | ci.curpos += amount; | 1252 | ci.curpos += amount; |
1254 | CUR_TI->available -= amount; | 1253 | CUR_TI->available -= amount; |
1255 | 1254 | ||
@@ -1963,12 +1962,11 @@ static bool audio_buffer_wind_forward(int new_track_ridx, int old_track_ridx) | |||
1963 | amount = tracks[old_track_ridx].filesize - ci.curpos; | 1962 | amount = tracks[old_track_ridx].filesize - ci.curpos; |
1964 | /* Then collect all data from tracks in between them */ | 1963 | /* Then collect all data from tracks in between them */ |
1965 | amount += audio_buffer_count_tracks(old_track_ridx, new_track_ridx); | 1964 | amount += audio_buffer_count_tracks(old_track_ridx, new_track_ridx); |
1965 | logf("bwf:%ldB", (long) amount); | ||
1966 | 1966 | ||
1967 | if (amount > FILEBUFUSED) | 1967 | if (amount > FILEBUFUSED) |
1968 | return false; | 1968 | return false; |
1969 | 1969 | ||
1970 | logf("bwf:%ldB",amount); | ||
1971 | |||
1972 | /* Wind the buffer to the beginning of the target track or its codec */ | 1970 | /* Wind the buffer to the beginning of the target track or its codec */ |
1973 | buf_ridx = RINGBUF_ADD(buf_ridx, amount); | 1971 | buf_ridx = RINGBUF_ADD(buf_ridx, amount); |
1974 | 1972 | ||
@@ -2535,7 +2533,6 @@ static bool audio_load_track(int offset, bool start_play, bool rebuffer) | |||
2535 | tracks[track_widx].id3.offset = offset; | 2533 | tracks[track_widx].id3.offset = offset; |
2536 | break; | 2534 | break; |
2537 | } | 2535 | } |
2538 | |||
2539 | } | 2536 | } |
2540 | 2537 | ||
2541 | logf("alt:%s", trackname); | 2538 | logf("alt:%s", trackname); |
@@ -2891,9 +2888,8 @@ static void audio_rebuffer_and_seek(size_t newpos) | |||
2891 | int fd; | 2888 | int fd; |
2892 | char *trackname; | 2889 | char *trackname; |
2893 | 2890 | ||
2894 | trackname = playlist_peek(0); | ||
2895 | /* (Re-)open current track's file handle. */ | 2891 | /* (Re-)open current track's file handle. */ |
2896 | 2892 | trackname = playlist_peek(0); | |
2897 | fd = open(trackname, O_RDONLY); | 2893 | fd = open(trackname, O_RDONLY); |
2898 | if (fd < 0) | 2894 | if (fd < 0) |
2899 | { | 2895 | { |
@@ -3342,6 +3338,8 @@ static void audio_thread(void) | |||
3342 | 3338 | ||
3343 | case SYS_TIMEOUT: | 3339 | case SYS_TIMEOUT: |
3344 | LOGFQUEUE("audio < SYS_TIMEOUT"); | 3340 | LOGFQUEUE("audio < SYS_TIMEOUT"); |
3341 | if (pcmbuf_output_completed()) | ||
3342 | pcmbuf_play_stop(); /* Stop to ensure unboosted */ | ||
3345 | break; | 3343 | break; |
3346 | 3344 | ||
3347 | default: | 3345 | default: |