From fe08f3c3bd550c0d9b89ee2cbb6cec4d9ca918e0 Mon Sep 17 00:00:00 2001 From: Andrea Bondavalli Date: Mon, 20 Jul 2020 16:51:30 +0200 Subject: [PATCH] Fix to independent playback and capture patch to stop triggering PCM capture interrupts when a capture is not running and PCM playback interrupts when a playback is not running. This was causing a possible kernel hang while stopping a capture with an ongoing playback or vice versa. --- ...enna-alsa-lkm-independent-playback-capture.patch | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/3rdparty/patches/ravenna-alsa-lkm-independent-playback-capture.patch b/3rdparty/patches/ravenna-alsa-lkm-independent-playback-capture.patch index dc8f094..09d212c 100644 --- a/3rdparty/patches/ravenna-alsa-lkm-independent-playback-capture.patch +++ b/3rdparty/patches/ravenna-alsa-lkm-independent-playback-capture.patch @@ -169,6 +169,19 @@ index 25b77dc..ec62624 100644 break; } case MT_ALSA_Msg_SetSampleRate: +@@ -1468,8 +1502,10 @@ void AudioFrameTIC(void* user) + frame_process_begin(&self->m_RTP_streams_manager); + if(self->m_pALSAChip && self->m_alsa_driver_frontend) + { +- self->m_alsa_driver_frontend->pcm_interrupt(self->m_pALSAChip, 1); +- self->m_alsa_driver_frontend->pcm_interrupt(self->m_pALSAChip, 0); ++ if (self->m_bIsRecordingIO) ++ self->m_alsa_driver_frontend->pcm_interrupt(self->m_pALSAChip, 1); ++ if (self->m_bIsPlaybackIO) ++ self->m_alsa_driver_frontend->pcm_interrupt(self->m_pALSAChip, 0); + } + frame_process_end(&self->m_RTP_streams_manager); + #endif @@ -1680,20 +1714,25 @@ int get_interrupts_frame_size(void* user, uint32_t *framesize) return -EINVAL; }