From 2f22a4dde125743ed0ed5f57ef33573cfc4940e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?IOhannes=20m=20zm=C3=B6lnig?= Date: Thu, 14 Jul 2011 14:39:04 +0000 Subject: more intelligent handling of the sys_get_audio_params break svn path=/trunk/externals/iem/mediasettings/; revision=15151 --- audiosettings.c | 44 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/audiosettings.c b/audiosettings.c index 353c2f8..ca701a8 100644 --- a/audiosettings.c +++ b/audiosettings.c @@ -24,6 +24,33 @@ #define MAXAUDIOINDEV 4 #define MAXAUDIOOUTDEV 4 + +static void as_get_audio_params( + int *pnaudioindev, int *paudioindev, int *pchindev, + int *pnaudiooutdev, int *paudiooutdev, int *pchoutdev, + int *prate, int *padvance, int *pcallback, int *pblocksize) { +#if (defined PD_MINOR_VERSION) && (PD_MINOR_VERSION >= 43) + sys_get_audio_params(pnaudioindev , paudioindev , pchindev, + pnaudiooutdev, paudiooutdev, pchoutdev, + prate, padvance, pcallback, pblocksize); +#else + if(pblocksize) + *pblocksize=-1; + + sys_get_audio_params(pnaudioindev , paudioindev , pchindev, + pnaudiooutdev, paudiooutdev, pchoutdev, + prate, padvance, pcallback); + + +#endif + + + +} + + + + static t_class *audiosettings_class; t_symbol*s_pdsym=NULL; @@ -161,7 +188,7 @@ static void as_params_get(t_as_params*parms) { memset(parms, 0, sizeof(t_as_params)); parms->callback=-1; - sys_get_audio_params( &parms->naudioindev, parms->audioindev, parms->chindev, + as_get_audio_params( &parms->naudioindev, parms->audioindev, parms->chindev, &parms->naudiooutdev, parms->audiooutdev, parms->choutdev, &parms->rate, &parms->advance, &parms->callback, &parms->blocksize); @@ -625,6 +652,19 @@ void audiosettings_setup(void) #endif post("\tcompiled: "__DATE__""); +#if (defined PD_MINOR_VERSION) && (PD_MINOR_VERSION < 43) + if(1) { + int major, minor, bugfix; + sys_getversion(&major, &minor, &bugfix); + if(0==major && minor>=43) { + error("[audiosettings] have been compiled against an old version of Pd"); + error(" that is incompatible with the one you are using!"); + error(" recompile [audiosettings]"); + } + return; + } +#endif + audiosettings_class = class_new(gensym("audiosettings"), (t_newmethod)audiosettings_new, (t_method)audiosettings_free, sizeof(t_audiosettings), 0, 0); @@ -671,7 +711,7 @@ static void audiosettings_testdevices(t_audiosettings *x) int naudioindev, audioindev[MAXAUDIOINDEV], chindev[MAXAUDIOINDEV]; int naudiooutdev, audiooutdev[MAXAUDIOOUTDEV], choutdev[MAXAUDIOOUTDEV]; int rate, advance, callback, blocksize; - sys_get_audio_params(&naudioindev, audioindev, chindev, + as_get_audio_params(&naudioindev, audioindev, chindev, &naudiooutdev, audiooutdev, choutdev, &rate, &advance, &callback, &blocksize); -- cgit v1.2.1