From 14d7e431bd27ae53ca5a7ec40a7f614dd36d3f11 Mon Sep 17 00:00:00 2001 From: "Charles J. Cliffe" Date: Sun, 9 Nov 2014 05:18:33 -0500 Subject: [PATCH] PortAudio adjustments for OSX Seems to be some sort of audio init race condition, intermittent crash on startup --- CMakeLists.txt | 5 ++--- src/PrimaryGLContext.cpp | 10 ++++++++-- src/PrimaryGLContext.h | 2 ++ 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 566ab42..ce0d95a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -76,9 +76,8 @@ else (DEFINED WIN32) link_directories(${RTLSDR_LIB}) set(FFTW_LIB fftw3) - - find_package (OpenAL) - include_directories ( ${OPENAL_INCLUDE_DIR} ) + + SET (PORTAUDIO_LIBRARY portaudio) endif (DEFINED WIN32) diff --git a/src/PrimaryGLContext.cpp b/src/PrimaryGLContext.cpp index 5354cce..7c86dc3 100644 --- a/src/PrimaryGLContext.cpp +++ b/src/PrimaryGLContext.cpp @@ -15,7 +15,9 @@ #include "AppFrame.h" #include +#ifdef WIN32 #include "pa_debugprint.h" +#endif wxString glGetwxString(GLenum name) { const GLubyte *v = glGetString(name); @@ -109,10 +111,14 @@ static int patestCallback(const void *inputBuffer, void *outputBuffer, unsigned TestGLCanvas *src = (TestGLCanvas *) userData; + float *out = (float*) outputBuffer; + if (!src->audio_queue.size()) { + for (int i = 0; i < framesPerBuffer * 2; i++) { + out[i] = 0; + } return paContinue; } - float *out = (float*) outputBuffer; std::vector *nextBuffer = src->audio_queue.front(); @@ -161,7 +167,7 @@ TestGLCanvas::TestGLCanvas(wxWindow *parent, int *attribList) : std::cout << "Error starting :(\n"; } - outputParameters.device = 5; /* default output device */ + outputParameters.device = Pa_GetDefaultOutputDevice(); /* default output device */ if (outputParameters.device == paNoDevice) { std::cout << "Error: No default output device.\n"; } diff --git a/src/PrimaryGLContext.h b/src/PrimaryGLContext.h index 0889ec2..c38d489 100644 --- a/src/PrimaryGLContext.h +++ b/src/PrimaryGLContext.h @@ -12,7 +12,9 @@ #include "liquid/liquid.h" #include "portaudio.h" +#ifdef WIN32 #include "pa_stream.h" +#endif class PrimaryGLContext: public wxGLContext { public: