diff --git a/deps/src/shim.c b/deps/src/shim.c index 7d8d387..fa7df80 100644 --- a/deps/src/shim.c +++ b/deps/src/shim.c @@ -3,6 +3,8 @@ #include #include +#define SHIM_REVISION 2 + int paCallback(const void *inputBuffer, void *outputBuffer, unsigned long framesPerBuffer, const PaStreamCallbackTimeInfo* timeInfo, @@ -31,6 +33,11 @@ void synchronize_buffer(void *buffer) sem_post(&CSemaphore); } +int get_shim_revision(void) +{ + return SHIM_REVISION; +} + PaError open_stream(unsigned int sampleRate, unsigned int bufSize) { PaError err; diff --git a/deps/usr/lib/libportaudio_shim.so b/deps/usr/lib/libportaudio_shim.so index 6484f3c..241ee16 100755 Binary files a/deps/usr/lib/libportaudio_shim.so and b/deps/usr/lib/libportaudio_shim.so differ diff --git a/src/portaudio.jl b/src/portaudio.jl index 7387f7e..be7e13f 100644 --- a/src/portaudio.jl +++ b/src/portaudio.jl @@ -8,6 +8,8 @@ typealias PaTime Cdouble typealias PaHostApiTypeId Cint const PA_NO_ERROR = 0 +# expected shim revision, so we can notify if it gets out of sync +const SHIM_REVISION = 2 const libportaudio_shim = find_library(["libportaudio_shim",], [Pkg.dir("AudioIO", "deps", "usr", "lib"),]) @@ -60,6 +62,10 @@ function open_portaudio_stream(stream::PortAudioStream) # TODO: handle more streams + shim_rev = ccall((:get_shim_revision, libportaudio_shim), Cint, ()) + if shim_rev != SHIM_REVISION + error("Expected shim revision $SHIM_REVISION, got $shim_rev. Run 'make' from AudioIO/deps/src") + end fd = ccall((:make_pipe, libportaudio_shim), Cint, ()) info("Launching PortAudio Task...")