summaryrefslogtreecommitdiff
path: root/apps/playback.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/playback.c')
-rw-r--r--apps/playback.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/apps/playback.c b/apps/playback.c
index 8829757949..e340938c0c 100644
--- a/apps/playback.c
+++ b/apps/playback.c
@@ -1454,7 +1454,9 @@ bool codec_request_next_track_callback(void)
1454{ 1454{
1455 if (current_codec == CODEC_IDX_VOICE) { 1455 if (current_codec == CODEC_IDX_VOICE) {
1456 voice_remaining = 0; 1456 voice_remaining = 0;
1457 return !ci_voice.stop_codec; 1457 /* Terminate the codec if they are messages waiting on the queue or
1458 core has been requested the codec to be terminated. */
1459 return !ci_voice.stop_codec && queue_empty(&voice_codec_queue);
1458 } 1460 }
1459 1461
1460 if (ci.stop_codec || !playing) 1462 if (ci.stop_codec || !playing)
@@ -1679,7 +1681,7 @@ void audio_thread(void)
1679 1681
1680#ifndef SIMULATOR 1682#ifndef SIMULATOR
1681 case SYS_USB_CONNECTED: 1683 case SYS_USB_CONNECTED:
1682 logf("USB Connection"); 1684 logf("USB: Audio core");
1683 audio_stop_playback(); 1685 audio_stop_playback();
1684 usb_acknowledge(SYS_USB_CONNECTED_ACK); 1686 usb_acknowledge(SYS_USB_CONNECTED_ACK);
1685 usb_wait_for_disconnect(&audio_queue); 1687 usb_wait_for_disconnect(&audio_queue);
@@ -1737,6 +1739,12 @@ void codec_thread(void)
1737 1739
1738#ifndef SIMULATOR 1740#ifndef SIMULATOR
1739 case SYS_USB_CONNECTED: 1741 case SYS_USB_CONNECTED:
1742 while (voice_codec_loaded) {
1743 if (current_codec != CODEC_IDX_VOICE)
1744 swap_codec();
1745 sleep(1);
1746 }
1747 logf("USB: Audio codec");
1740 usb_acknowledge(SYS_USB_CONNECTED_ACK); 1748 usb_acknowledge(SYS_USB_CONNECTED_ACK);
1741 usb_wait_for_disconnect(&codec_queue); 1749 usb_wait_for_disconnect(&codec_queue);
1742 break ; 1750 break ;
@@ -1816,6 +1824,7 @@ void voice_codec_thread(void)
1816 1824
1817#ifndef SIMULATOR 1825#ifndef SIMULATOR
1818 case SYS_USB_CONNECTED: 1826 case SYS_USB_CONNECTED:
1827 logf("USB: Voice codec");
1819 usb_acknowledge(SYS_USB_CONNECTED_ACK); 1828 usb_acknowledge(SYS_USB_CONNECTED_ACK);
1820 usb_wait_for_disconnect(&voice_codec_queue); 1829 usb_wait_for_disconnect(&voice_codec_queue);
1821 break ; 1830 break ;