From cbcfedbad022d907e57eb576a4c86ae10de0a217 Mon Sep 17 00:00:00 2001 From: Spencer Russell Date: Thu, 28 Aug 2014 13:36:38 -0400 Subject: [PATCH] adds shim revision check so we know if it gets out of sync --- deps/src/shim.c | 7 +++++++ deps/usr/lib/libportaudio_shim.so | Bin 11809 -> 11923 bytes src/portaudio.jl | 6 ++++++ 3 files changed, 13 insertions(+) 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 6484f3cf2fc44f1bdc9922709de55a42d1f3903e..241ee1680cab8fccd075589f16c52490c55e3fc5 100755 GIT binary patch delta 2536 zcmZuz3rti;6rFkdVc#yF$Fl6QDEq+$x}bcFicyJZr9LbwTCGyWPg8`oeo#?k(gsp& zlMOMt-ZsRB8f;7|rbf(as%RC9pPIBro3zHpr1(n~H4R#$)?&B!zK^!rN#472&b@Q* zoq2a=-k!x!yCcKiVqr=vR|S)@BKhO2^Ac4!FEO(6q`%mvqL<|)ZOkO7<#yyZ2wdqJs-Y>dpy&#^2cN}wBzH%XKKaI_j+#b{Gd9ir08a1)j048W1w2F z@Ls49Ci91INO19M_@2)1LaM<9k|BeiCl<;LvfIfSlUO=ykbLOuMGL|ngSVzmRGDd- zVmC@Vv$2aBuT6xV(D+8HYIs<)@7DOMnti**X8|{QF+;!6v#<8$xT>z%%19KPIg-&Nxd{W}xDYnIViMutKy2Z!jk9(U;u|;Skx1O=|slMW4vr!e#3E(@$TaG=#4Wu0Ck7LWp zBuuFcTvD)|ut2z1!B)Zs!rclM2pb7^D)?!Fk2N=#h}fYJ50Gdu6K+xP9l{BO8x?$m zFwJ6M8De>xDTai+t?XA6^X1?ZIec4geUiLcsO^*6Ok+riGkZ`Q@23f%{UOzU{|kHg z%#zWZqFDZfmU8%9{014fl!cLG8}sDWvd3oZ%}3`=iE>-nT;yZ57(dp4uiA5_Wk~Qp z`c_aYO!02T{AeM|dW|@&DHk*O3LQ`;ne#E({Yay)_@&x`1?V8f+X5rS?00g}OIyXm zu*r{|9&&M#UN|5?0T2EikGGjPb}#f%Dst;RNe+MbL~g6VX`6hgK+``lP%MC^s?kyU z7`5<)IE6>yH*uJ`p7hx}tqyS}r4&9NI|5nO$z?gjcRq{9&sPjl)Vp)rDu(23j*kgo zh<=%Whx72DS=-DZ`Sf)`=HIumuz;ipyR4(%`_e=S%>1i|>Ol@)MAtWm;_;*8;6fi} zYtc)K4>L@poo>db8%-9X9E&NppxlD86XkA{y(qg-_M4?ZMnP}=GgN10oY>m z^2@Nx=Jo%Ac`JKpO0x8c@OqN@jl={hlHvI5#pg5}vkfzy!QS}jRog)>KHnE`Kgl)v zDJrPxdy4iGHSNe^y$LE#QUwdxU_$Z|e~VGYG!1IywAR?P6M#*CW687aF-@)cV3HX! zQwsSYRHk@&4}?+q*)JQW#{q#8nJSPnrxiNb<236x)co}y1C`^`4 z!RMyY+ftd(>=^$qZW^V9jdz4GM@Kyl;m)V{79z`7dN*?1(861VmtIe7>{kY>D9y|t|56D~aw&HEE^AY8tp@kWB>(?`0 zK%<4oDwbv<(<+Me@{!6ry2;la8eMf(@wL#IfE2G%^Q?C6TSUs4G*KZUJ3mJ+eAW*N zDtFTQ@!7`^86roUottQ6HH|bxx|=gXjL%gQT;&)+s<*Bv^9jBoz`*orNjy4C40y?Rqb+lQ^@ zV98p>t00tBl&V+ga|vC@>UFHk2{3?cj|szK(`7LPJw@W6#ty=APpK$rwJpJQPZ}Kd z1Vp{sW5|?>`o_U)&RZ(>Yg?cnmU~N6_1^?t?u9OIkyXD6af{vXj)R3hiBE!{uPC)q zyCZdZD;n~h61We7BTB`a4mH;q5JEJHwga{ca9K!$6C(oRBaQhT21bC23_w?4ty^Col~dmaESnZ6$#LPPU7nL}Fyke<9FYVOL>3l9>B0;BG$JeO zN9l6wbNjEKL>2&lZaPl_Z?4Ob%o?Nq+;;woaUqTp@K2)~F6X)Myco!v&WoYswJSn( zB3Oebc_Um1E`8SE~sk#vmjWI{pD|rac(| delta 2331 zcmZWrdu)?c6uG!qAZo7s8N`1sCf%--F0JOYgbA-~F9? z&;7o0zdHyVUcGOMt;WD)t56)fFg2WCYPx4u;5~DAQ+MXLNkNl+u^Lkh)%+cM>kI34 ziPr6dudJPK=$+t~ydPgKgHfKIzUKQR6k73@ioXR_KaHOH{oOa0Ci)7&BNXdJW@K$p zCzSIWa9D8i@2G_huCg4rU@E!$Dl~x`50py{~jQ3QAOL*>v2Yb zP2~zPoamN2>f>Y#GUJ@Q2j<3kxiz{zZVhi+EBO03q#N|vD{ zmc1O?WLE|D2ydj}k?S$E?57CRiX&HKynwJkxJSnG2#bUxGM-IXNBB^z8JX;SBJ@P; zlLc9X;|RCNIGu1j;Vm+@5vDzj1QAPn^;3|L_WDieR!Di{QfNqO9Z%XW1bU@*{knK% zhj#<9>$CyX4-&Q4|4Y0Z&Klg!<+9?(#=8M2)EB!!q85J_l5E>dsntJ|dMj|!#ssO| zzZ=nT0M{Mfh)tkRzYhuiSMN(?1<9^Gm>0tb>A$1Hu*MwBpg&H@AbkZbiZsp@yAl|A z9w$h4wZLj)){^INmiDT9A^lS9oT4eZslkBdwBYf7VzG9;54#t8DHW-8)FOp;j!W%T zxLth>4xluTq#l%BgaKnEzYXc8j2R!{>cg{;3{_3E?wnwa`u3`cKeI5eHp(mX?QjpQ zG?m8%N%uK?Xv%b~!fyNG3F+LRAn^RNwZ$u)L=}&k zU|!OTnL(;Uv^d4FIaIf3+TqKEuB0Wlh&rs!!3Ok@o?O5?p*oq4Ykl%@Tc0}iv+8fg zgUwP3LCX_H?W=GCeAy|mh3m3ncp8+24cw0%J`2-!;Ia>;(IJapXtvGy54Vu=LgNQQ zn52CJhH(1>Y=v-;rACnBQ=8OhlC4NldlGra8F}zkS-X*?_-M(jS*V%(0pbTZrslXy z`mCX5IbgNpJ}s3sB%_ti^;@?x?xAQQyqTrwNn0f+I_WFN4**Sei=wN(QKB93NbxEq zl^Vwp8hetqB7`N!2ei9Imt<7oV7kWdlb^+%7{wlq>>$z-y=pJw zmSQFv=9%Z4t5bw2ILp^i;MnfaUY2O%drpVLhE*GUr;nYEc026)=pPxIIlXGAnHJ;{ zbWAI>YNe(5To^-ED?rWXf^T}EwT(^;n&u0jVS1slQ)N5h==3tvfQqmfZ%r>XYBd^x zJXe`fD|akTL=m+pBXHDJX4P(2&A$(0u0oS`-{8T>cb8iKcdbH$yAXnI3qK$2aDOFm z5gKNc8T;%?qD9bw=sw-0Xnin-=nPdf+OOdAl=1yg?ba={)hr9~f1!JDq z_#CLqcBW|$LK#t75x*d95YBeukqc+1it%hf_68P#bBO7#9>dWHwyC0-)j(#Bvrya7 zqcbHkZEKJ6Nw6fx8GS2fH|I6LbDe1|4{uFHScy)+%e)7Cxr;c1rrdtvjv1Eab@LLi z=GXcruXhLwh;IMMhcc@22jOsjKgKqBz1$6TJcZZ74_>En2iBpD{{M)Md6x_Dr7jnm H3+(>_u)h#| 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...")