Index: firmware/pcm_playback.c =================================================================== --- firmware/pcm_playback.c (revision 13786) +++ firmware/pcm_playback.c (working copy) @@ -78,7 +78,8 @@ void pcm_play_dma_stop(void) { pcm_playing = false; - pcm_paused = false; + if (!audio_status()) + pcm_paused = audio_status(); } void pcm_play_pause_pause(void) Index: firmware/target/arm/s3c2440/gigabeat-fx/pcm-meg-fx.c =================================================================== --- firmware/target/arm/s3c2440/gigabeat-fx/pcm-meg-fx.c (revision 13786) +++ firmware/target/arm/s3c2440/gigabeat-fx/pcm-meg-fx.c (working copy) @@ -168,7 +168,8 @@ while (IISCON & (1<<7)) ; pcm_playing = false; - pcm_paused = false; + if (!audio_status()) + pcm_paused = false; } /* Disconnect the IIS clock */ Index: firmware/target/arm/pcm-pp.c =================================================================== --- firmware/target/arm/pcm-pp.c (revision 13786) +++ firmware/target/arm/pcm-pp.c (working copy) @@ -254,7 +254,8 @@ void pcm_play_dma_stop(void) { pcm_playing = false; - pcm_paused = false; + if (!audio_status()) + pcm_paused = false; #ifdef CPU_PP502x /* Disable playback FIFO and interrupt */ Index: firmware/target/coldfire/pcm-coldfire.c =================================================================== --- firmware/target/coldfire/pcm-coldfire.c (revision 13786) +++ firmware/target/coldfire/pcm-coldfire.c (working copy) @@ -216,7 +216,8 @@ static void pcm_play_dma_stop_irq(void) { pcm_playing = false; - pcm_paused = false; + if (!audio_status()) + pcm_paused = false; DSR0 = 1; DCR0 = 0;