diff options
| author | Michael Sevakis <jethead71@rockbox.org> | 2006-09-17 18:52:31 +0000 |
|---|---|---|
| committer | Michael Sevakis <jethead71@rockbox.org> | 2006-09-17 18:52:31 +0000 |
| commit | 9d56f2d2cf8889465fdf95ffefce195a06024f83 (patch) | |
| tree | 36efe64d97c5ef76563cbc783e1e02c22742af42 | |
| parent | d8f32834d697d32efb7736117190ad9bbf120669 (diff) | |
| download | rockbox-9d56f2d2cf8889465fdf95ffefce195a06024f83.zip rockbox-9d56f2d2cf8889465fdf95ffefce195a06024f83.tar.gz rockbox-9d56f2d2cf8889465fdf95ffefce195a06024f83.tar.bz2 rockbox-9d56f2d2cf8889465fdf95ffefce195a06024f83.tar.xz | |
SWCODEC recording hang fixed. Fixed other trouble spots for codec swapping when playing. Removed call to audio_set_recording_options from fm_recording_settings on SWCODEC (Not proper to do ! My bad.).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10978 a1c6a512-1295-4272-9138-f99709370657
| -rw-r--r-- | apps/playback.c | 17 | ||||
| -rw-r--r-- | apps/recorder/radio.c | 6 |
2 files changed, 8 insertions, 15 deletions
diff --git a/apps/playback.c b/apps/playback.c index d5f2b90..e480650 100644 --- a/apps/playback.c +++ b/apps/playback.c @@ -951,19 +951,13 @@ static void* voice_request_buffer_callback(size_t *realsize, size_t reqsize) case Q_AUDIO_PLAY: LOGFQUEUE("voice < Q_AUDIO_PLAY"); if (playing) - { - if (audio_codec_loaded) - swap_codec(); - else - yield(); - } + swap_codec(); break; #if defined(HAVE_RECORDING) && !defined(SIMULATOR) case Q_ENCODER_RECORD: LOGFQUEUE("voice < Q_ENCODER_RECORD"); - if (audio_codec_loaded) - swap_codec(); + swap_codec(); break; #endif @@ -1747,7 +1741,8 @@ static void codec_thread(void) LOGFQUEUE("codec < Q_CODEC_LOAD_DISK"); audio_codec_loaded = true; #ifdef PLAYBACK_VOICE - if (voice_codec_loaded) + /* Don't sent messages to voice codec if it's not current */ + if (voice_codec_loaded && current_codec == CODEC_IDX_VOICE) { LOGFQUEUE("codec > voice Q_AUDIO_PLAY"); queue_post(&voice_queue, Q_AUDIO_PLAY, 0); @@ -1776,7 +1771,7 @@ static void codec_thread(void) audio_codec_loaded = true; #ifdef PLAYBACK_VOICE - if (voice_codec_loaded) + if (voice_codec_loaded && current_codec == CODEC_IDX_VOICE) { LOGFQUEUE("codec > voice Q_AUDIO_PLAY"); queue_post(&voice_queue, Q_AUDIO_PLAY, 0); @@ -1794,7 +1789,7 @@ static void codec_thread(void) #if defined(HAVE_RECORDING) && !defined(SIMULATOR) case Q_ENCODER_LOAD_DISK: LOGFQUEUE("codec < Q_ENCODER_LOAD_DISK"); - audio_codec_loaded = false; + audio_codec_loaded = false; /* Not audio codec! */ #ifdef PLAYBACK_VOICE if (voice_codec_loaded && current_codec == CODEC_IDX_VOICE) { diff --git a/apps/recorder/radio.c b/apps/recorder/radio.c index 208e7b6..caaba67 100644 --- a/apps/recorder/radio.c +++ b/apps/recorder/radio.c @@ -1635,19 +1635,17 @@ static bool fm_recording_settings(void) { bool ret = recording_menu(true); +#if CONFIG_CODEC != SWCODEC if (!ret) { rec_set_recording_options(global_settings.rec_frequency, global_settings.rec_quality, -#if CONFIG_CODEC == SWCODEC - AUDIO_SRC_FMRADIO, SRCF_FMRADIO_PLAYING, -#else AUDIO_SRC_LINEIN, 0, -#endif global_settings.rec_channels, global_settings.rec_editable, global_settings.rec_prerecord_time); } +#endif return ret; } |