[Taranis] No more audio freeze!
This commit is contained in:
+2
-1
@@ -325,8 +325,9 @@ void AudioQueue::pushBuffer(AudioBuffer *buffer)
|
||||
{
|
||||
buffer->state = AUDIO_BUFFER_FILLED;
|
||||
|
||||
if (dacQueue(buffer))
|
||||
if (dacQueue(buffer)) {
|
||||
buffer->state = AUDIO_BUFFER_PLAYING;
|
||||
}
|
||||
|
||||
bufferWIdx = nextBufferIdx(bufferWIdx);
|
||||
}
|
||||
|
||||
@@ -95,8 +95,10 @@ void dacInit()
|
||||
|
||||
bool dacQueue(AudioBuffer *buffer)
|
||||
{
|
||||
__disable_irq();
|
||||
if (dacIdle) {
|
||||
dacIdle = false;
|
||||
__enable_irq();
|
||||
DMA1_Stream5->CR &= ~DMA_SxCR_EN ; // Disable DMA channel
|
||||
DMA1->HIFCR = DMA_HIFCR_CTCIF5 | DMA_HIFCR_CHTIF5 | DMA_HIFCR_CTEIF5 | DMA_HIFCR_CDMEIF5 | DMA_HIFCR_CFEIF5 ; // Write ones to clear bits
|
||||
DMA1_Stream5->M0AR = CONVERT_PTR(buffer->data);
|
||||
@@ -107,6 +109,7 @@ bool dacQueue(AudioBuffer *buffer)
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
__enable_irq();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user