diff options
| author | Steve Bavin <pondlife@pondlife.me> | 2006-10-25 08:54:25 +0000 |
|---|---|---|
| committer | Steve Bavin <pondlife@pondlife.me> | 2006-10-25 08:54:25 +0000 |
| commit | 71dd94a7eb42dfc29d8b454d00df6debd7d34a65 (patch) | |
| tree | 3135aba9bff781de7fe0632a330c3ca03a0544d1 /apps/playback.c | |
| parent | ff5fd00de683e9e1a0da24e75c8a5ad419516e32 (diff) | |
| download | rockbox-71dd94a7eb42dfc29d8b454d00df6debd7d34a65.zip rockbox-71dd94a7eb42dfc29d8b454d00df6debd7d34a65.tar.gz rockbox-71dd94a7eb42dfc29d8b454d00df6debd7d34a65.tar.bz2 rockbox-71dd94a7eb42dfc29d8b454d00df6debd7d34a65.tar.xz | |
A bit more voice simplification/MAS fixage (FS#6241). Also clear any buffered voice when playback is started.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11334 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/playback.c')
| -rw-r--r-- | apps/playback.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/apps/playback.c b/apps/playback.c index db47b0b..b68a8b8 100644 --- a/apps/playback.c +++ b/apps/playback.c @@ -324,14 +324,6 @@ void mp3_play_stop(void) { #ifdef PLAYBACK_VOICE LOGFQUEUE("mp3 > voice Q_VOICE_STOP"); - queue_post(&voice_queue, Q_VOICE_STOP, 0); -#endif -} - -void mp3_play_abort(void) -{ -#ifdef PLAYBACK_VOICE - LOGFQUEUE("mp3 > voice Q_VOICE_STOP"); queue_post(&voice_queue, Q_VOICE_STOP, (void *)1); #endif } @@ -445,6 +437,15 @@ bool audio_has_changed_track(void) void audio_play(long offset) { logf("audio_play"); + +#ifdef PLAYBACK_VOICE + /* Truncate any existing voice output so we don't have spelling + * etc. over the first part of the played track */ + LOGFQUEUE("mp3 > voice Q_VOICE_STOP"); + queue_post(&voice_queue, Q_VOICE_STOP, (void *)1); +#endif + + /* Start playback */ if (playing && offset <= 0) { LOGFQUEUE("audio > audio Q_AUDIO_NEW_PLAYLIST"); @@ -457,14 +458,19 @@ void audio_play(long offset) LOGFQUEUE("audio > audio Q_AUDIO_PLAY"); queue_post(&audio_queue, Q_AUDIO_PLAY, (void *)offset); } + + /* Don't return until playback has actually started */ while (!playing) yield(); } void audio_stop(void) { + /* Stop playback */ LOGFQUEUE("audio > audio Q_AUDIO_STOP"); queue_post(&audio_queue, Q_AUDIO_STOP, 0); + + /* Don't return until playback has actually stopped */ while(playing) yield(); } |