From 82a6e3cfe8afc3f3f897d7926f7b42c3e9455ba1 Mon Sep 17 00:00:00 2001 From: Florent Berthaut <florent.berthaut@univ-lille.fr> Date: Mon, 3 Apr 2023 19:09:14 +0200 Subject: [PATCH] Fixed crash when jack is not started --- src/audio/AudioManager.cpp | 42 +++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/src/audio/AudioManager.cpp b/src/audio/AudioManager.cpp index 96a1c70..9c8812e 100644 --- a/src/audio/AudioManager.cpp +++ b/src/audio/AudioManager.cpp @@ -111,28 +111,36 @@ void AudioManager::init() { m_rtBufSize = 1024; - m_rtAudio->openStream(param, NULL, RTAUDIO_FLOAT32, data.nRate, + bool init=true; + try{ + m_rtAudio->openStream(param, NULL, RTAUDIO_FLOAT32, data.nRate, &m_rtBufSize, - AudioManager::rtaudio_callback, &data, options); + AudioManager::rtaudio_callback, &data, options); + } + catch(const exception& e) { + init=false; + } - int nbBufs = 5; - m_bufSize = m_rtBufSize*nbBufs; + if(init) { + int nbBufs = 5; + m_bufSize = m_rtBufSize*nbBufs; - data.ringBuffer = ringbuffer_create(m_bufSize*3); + data.ringBuffer = ringbuffer_create(m_bufSize*3); - data.nChannel = param->nChannels; - data.bufSize = m_bufSize; - data.buffer = new float[m_bufSize]; - data.nbBufs = nbBufs; - data.bufCounter = 0; - memset(&data.buffer[0], 0, data.bufSize*sizeof(float)); + data.nChannel = param->nChannels; + data.bufSize = m_bufSize; + data.buffer = new float[m_bufSize]; + data.nbBufs = nbBufs; + data.bufCounter = 0; + memset(&data.buffer[0], 0, data.bufSize*sizeof(float)); - data.mixSize = m_rtBufSize; - data.mixBuffer = new float[data.mixSize]; - memset(&data.mixBuffer[0], 0, data.mixSize*sizeof(float)); + data.mixSize = m_rtBufSize; + data.mixBuffer = new float[data.mixSize]; + memset(&data.mixBuffer[0], 0, data.mixSize*sizeof(float)); - m_thread = new std::thread(audioThreadFunction, this); - m_init = true; + m_thread = new std::thread(audioThreadFunction, this); + m_init = true; + } } @@ -147,9 +155,9 @@ bool AudioManager::changeBuf(float* outputBuf, float maxSinValue) { } else { //cout<<"AudioManager : Could not write buffer"<<endl; - return false; } } + return false; } -- GitLab