diff options
author | Franz Zotter <fzotter@users.sourceforge.net> | 2006-03-26 21:34:29 +0000 |
---|---|---|
committer | Franz Zotter <fzotter@users.sourceforge.net> | 2006-03-26 21:34:29 +0000 |
commit | 233856ed92f86cdb4e07da8877df20cb931d5ef7 (patch) | |
tree | 95410040d0ddff89a3276dbecc820ab94abf6cc2 /pdoctave_get.c | |
parent | 4998870e6829a2a3818ae87557f81f220442a6b0 (diff) |
pdoctave weekend, yeah! So obviously, total nerdness has struck me already. IAOUOIASSFAIUOOOOOOAA!!!
But it works!!!
- Octave error handling for errors of write_shared_mem.cc (i.e. undefined variables).
- Return value for non existent data packages corrected in write_shared_mem.cc (it has to be removeSharedData instead of freeSharedData in exceptional cases)
- opening octave on library startup
- removed annoying post messages
yesyesyes,
perhaps it's time for Georgies threadlib "detach" for pdoctave_get now!
svn path=/trunk/externals/iem/pdoctave/; revision=4775
Diffstat (limited to 'pdoctave_get.c')
-rw-r--r-- | pdoctave_get.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/pdoctave_get.c b/pdoctave_get.c index 614ec84..6c371a2 100644 --- a/pdoctave_get.c +++ b/pdoctave_get.c @@ -26,7 +26,7 @@ static void *newPDOctaveGet (t_symbol *s, int argc, t_atom *argv) pd_new (pdoctave_get_class); t_symbol *name; - post("getpdoctaveinstances returned %d", getPDOctaveInstances()); +// post("getpdoctaveinstances returned %d", getPDOctaveInstances()); if (getPDOctaveInstances()<1) { error("Octave not running, insert a 'pdoctave' object!!"); return 0; @@ -64,7 +64,7 @@ static void pDOctaveGetCommand (PDOctaveGet *pdoctget_obj) sprintf(cmd, "%d", getSharedDataFrameId(pdoctget_obj->sdf)); cmd +=strlen(cmd); strcpy (cmd,");\n end\n\0"); - post("pdoctave_get: %s",pdoctget_obj->oct_command); + //post("pdoctave_get: %s",pdoctget_obj->oct_command); writeToOctaveStdIN (pdoctget_obj->oct_command); } @@ -140,6 +140,7 @@ static void pdoctaveOutletList (PDOctaveGet *pdoctget_obj) break; case UNKNOWN: post("pdoctave_get: unknown return value"); + s = gensym(""); return; } outlet_anything (pdoctget_obj->outlet, @@ -161,13 +162,18 @@ static void pDOctaveGetBang (PDOctaveGet *pdoctget_obj) // sending read command blockForWriting (sdf); pDOctaveGetCommand (pdoctget_obj); + // waiting for results if((sleepUntilWriteUnBlocked (sdf))==0) { error("pdoctave_get: pd and octave scheduling error, restart pd!"); + unBlockForReading (sdf); return; } - // waiting for results - pdoctget_obj->data = getSharedData (sdf); + if ((pdoctget_obj->data = getSharedData (sdf))==0) { + error("pdoctave_get: empty data package received"); + unBlockForReading (sdf); + return; + } // converting incoming data pdoctaveConvertData (pdoctget_obj); |