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.
This commit is contained in:
parent
af01d7d2f8
commit
fe08f3c3bd
@ -169,6 +169,19 @@ index 25b77dc..ec62624 100644
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case MT_ALSA_Msg_SetSampleRate:
|
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)
|
@@ -1680,20 +1714,25 @@ int get_interrupts_frame_size(void* user, uint32_t *framesize)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user