Source: cubicsdr Version: 0.2.7+dfsg-2 Severity: important Tags: ftbfs patch
Dear Maintainer, cubicsdr ftbfs with RtAudio6 (currently found in experimental) ``` /<<PKGBUILDDIR>>/src/audio/AudioThread.cpp: In member function ‘void AudioThread::setupDevice(int)’: /<<PKGBUILDDIR>>/src/audio/AudioThread.cpp:435:12: error: ‘RtAudioError’ does not name a type; did you mean ‘RtAudioErrorType’? 435 | catch (RtAudioError& e) { | ^~~~~~~~~~~~ | RtAudioErrorType /<<PKGBUILDDIR>>/src/audio/AudioThread.cpp:436:9: error: ‘e’ was not declared in this scope 436 | e.printMessage(); | ^ /<<PKGBUILDDIR>>/src/audio/AudioThread.cpp: In member function ‘virtual void AudioThread::run()’: /<<PKGBUILDDIR>>/src/audio/AudioThread.cpp:539:16: error: ‘RtAudioError’ does not name a type; did you mean ‘RtAudioErrorType’? 539 | catch (RtAudioError& e) { | ^~~~~~~~~~~~ | RtAudioErrorType /<<PKGBUILDDIR>>/src/audio/AudioThread.cpp:540:13: error: ‘e’ was not declared in this scope 540 | e.printMessage(); | ^ make[3]: *** [CMakeFiles/CubicSDR.dir/build.make:485: CMakeFiles/CubicSDR.dir/src/audio/AudioThread.cpp.o] Error 1 make[3]: *** Waiting for unfinished jobs.... ``` Attached you find a patch that fixes the FTBFS (but is otherwise untested, so use with care). No debdiff this time, sorry cheers
Description: Fix FTBFS with RtAudio 6 Replace try/catch with checking for return codes Author: IOhannes m zmölnig Origin: Debian Forwarded: no Last-Update: 2023-09-09 --- This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ Index: cubicsdr-0.2.7+dfsg/src/audio/AudioThread.cpp =================================================================== --- cubicsdr-0.2.7+dfsg.orig/src/audio/AudioThread.cpp +++ cubicsdr-0.2.7+dfsg/src/audio/AudioThread.cpp @@ -7,6 +7,7 @@ #include "CubicSDR.h" #include "DemodulatorInstance.h" #include <mutex> +#include <iostream> //50 ms #define HEARTBEAT_CHECK_PERIOD_MICROS (50 * 1000) @@ -378,7 +379,6 @@ void AudioThread::setupDevice(int device opts.streamName = "CubicSDR Audio Output"; - try { if (deviceController.find(outputDevice.load()) != deviceController.end()) { //'this' is not the controller, so remove it from the bounded list: //beware, we must take the controller mutex, because the audio callback may use the list of bounded @@ -418,8 +418,14 @@ void AudioThread::setupDevice(int device else if (deviceController[parameters.deviceId] == this) { //Attach callback - dac.openStream(¶meters, nullptr, RTAUDIO_FLOAT32, sampleRate, &nBufferFrames, &audioCallback, (void *)this, &opts); - dac.startStream(); + if(dac.openStream(¶meters, nullptr, RTAUDIO_FLOAT32, sampleRate, &nBufferFrames, &audioCallback, (void *)this, &opts)) { + std::cerr << dac.getErrorText() << std::endl; + return; + } + if(dac.startStream()) { + std::cerr << dac.getErrorText() << std::endl; + return; + } } else { //we are a bound thread, add ourselves to the controller deviceController[parameters.deviceId]. @@ -431,11 +437,6 @@ void AudioThread::setupDevice(int device } active = true; - } - catch (RtAudioError& e) { - e.printMessage(); - return; - } if (deviceId != -1) { outputDevice = deviceId; } @@ -530,15 +531,12 @@ void AudioThread::run() { } else { // 'this' is a controller thread: - try { if (dac.isStreamOpen()) { - dac.stopStream(); + if(dac.stopStream()) { + std::cerr << dac.getErrorText() << std::endl; + } } dac.closeStream(); - } - catch (RtAudioError& e) { - e.printMessage(); - } } // std::cout << "Audio thread done." << std::endl;