From 8d5822d6ed2f583db1f0efcc5204de16466d02aa Mon Sep 17 00:00:00 2001 From: Miika Pekkarinen Date: Tue, 14 Jun 2005 18:59:34 +0000 Subject: Playlist changed are recognized correctly. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6711 a1c6a512-1295-4272-9138-f99709370657 --- apps/playback.c | 4 +++- firmware/export/pcm_playback.h | 2 +- firmware/pcm_playback.c | 7 ++++--- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/apps/playback.c b/apps/playback.c index 7ef4f7b4bc..7c5ebe6b0e 100644 --- a/apps/playback.c +++ b/apps/playback.c @@ -1102,7 +1102,7 @@ void audio_check_buffer(void) } track_count = i; - if (tracks[track_widx].filerem != 0) + if (tracks[track_widx].filesize != 0) track_count++; /* Mark all other entries null. */ @@ -1487,6 +1487,8 @@ void audio_next(void) ci.stop_codec = true; playlist_next(1); queue_post(&audio_queue, AUDIO_PLAY, 0); + } else if (!pcm_crossfade_start()) { + pcm_play_stop(); } } diff --git a/firmware/export/pcm_playback.h b/firmware/export/pcm_playback.h index 32288d7d91..960641531a 100644 --- a/firmware/export/pcm_playback.h +++ b/firmware/export/pcm_playback.h @@ -42,7 +42,7 @@ void pcm_play_set_watermark(int numbytes, void (*callback)(int bytes_left)); void pcm_set_boost_mode(bool state); bool pcm_is_lowdata(void); -void pcm_crossfade_start(void); +bool pcm_crossfade_start(void); unsigned int audiobuffer_get_latency(void); bool audiobuffer_insert(char *buf, size_t length); bool pcm_is_crossfade_enabled(void); diff --git a/firmware/pcm_playback.c b/firmware/pcm_playback.c index d1be2a1102..b18238cd3e 100644 --- a/firmware/pcm_playback.c +++ b/firmware/pcm_playback.c @@ -229,6 +229,7 @@ void pcm_play_data(const unsigned char* start, int size, void pcm_play_stop(void) { + pcm_set_boost_mode(false); if (pcm_playing) { uda1380_enable_output(false); pcm_boost(false); @@ -243,7 +244,6 @@ void pcm_play_stop(void) pcmbuf_write_index = 0; next_start = NULL; next_size = 0; - pcm_set_boost_mode(false); } void pcm_play_pause(bool play) @@ -391,11 +391,11 @@ bool pcm_is_lowdata(void) return false; } -void pcm_crossfade_start(void) +bool pcm_crossfade_start(void) { //logf("cf:%d", audiobuffer_free / CHUNK_SIZE); if (audiobuffer_free > CHUNK_SIZE * 4 || !crossfade_enabled) { - return ; + return false; } pcm_boost(true); crossfade_active = true; @@ -407,6 +407,7 @@ void pcm_crossfade_start(void) crossfade_pos -= crossfade_amount*2; if (crossfade_pos < 0) crossfade_pos = PCMBUF_SIZE + crossfade_pos; + return true; } static __inline -- cgit v1.2.3