From ba9246441375a614630df2c44ff672f79ce11332 Mon Sep 17 00:00:00 2001 From: Thomas Grill Date: Sat, 20 Mar 2004 03:23:11 +0000 Subject: "" svn path=/trunk/; revision=1442 --- externals/grill/flext/changes.txt | 6 ++++-- externals/grill/flext/source/flbase.cpp | 20 ++++++++++++++++++++ externals/grill/flext/source/flbase.h | 3 +++ externals/grill/flext/source/flqueue.cpp | 6 ++++-- 4 files changed, 31 insertions(+), 4 deletions(-) diff --git a/externals/grill/flext/changes.txt b/externals/grill/flext/changes.txt index e8133f37..791b1025 100644 --- a/externals/grill/flext/changes.txt +++ b/externals/grill/flext/changes.txt @@ -21,6 +21,7 @@ Version history: - appended lacking ~ for tilde object help patches - uniform STL container for all kinds of attribute, method, class handling - support for MinGW +- added flext_obj::CanvasArgs 0.4.5: - added some more SIMD functions @@ -284,14 +285,15 @@ TODO list: general: - documentation - add log messages for debugging version -- use PD's t_float and t_int types (or comparable for 32-Bit safety) +- use PD's t_float and t_int types (or comparable for 32-bit safety) - add double handlers - add signal in/out connection query function - support for Max qelem style -- unify STL containers so that there's only one code template +- PD: with DSP objects all float messages to left input are currently converted to signal + there should be a way to avoid this bugs: diff --git a/externals/grill/flext/source/flbase.cpp b/externals/grill/flext/source/flbase.cpp index 2fd25e8e..9b2d5506 100644 --- a/externals/grill/flext/source/flbase.cpp +++ b/externals/grill/flext/source/flbase.cpp @@ -120,3 +120,23 @@ const t_symbol *flext_obj::GetParamSym(const t_symbol *sym,t_canvas *c) return sym; } + +#if FLEXT_SYS == FLEXT_SYS_PD +// this declaration is missing in m_pd.h (0.37-0 and -1) +extern "C" void canvas_getargs(int *argcp, t_atom **argvp); +#endif + + +void flext_obj::CanvasArgs(AtomList &args) const +{ +#if FLEXT_SYS == FLEXT_SYS_PD + int argc; + t_atom *argv; + canvas_getargs(&argc,&argv); + args(argc); + for(int i = 0; i < argc; ++i) args[i] = argv[i]; +#else + #pragma message("Not implemented") + args(0); +#endif +} diff --git a/externals/grill/flext/source/flbase.h b/externals/grill/flext/source/flbase.h index 594bfbfc..3c190c99 100644 --- a/externals/grill/flext/source/flbase.h +++ b/externals/grill/flext/source/flbase.h @@ -260,6 +260,9 @@ class FLEXT_SHARE FLEXT_CLASSDEF(flext_obj): //! Convert $0 or #0 symbol into appropriate value static const t_symbol *GetParamSym(const t_symbol *s,t_canvas *c); + //! Get the canvas arguments + void CanvasArgs(AtomList &args) const; + //! @} FLEXT_O_INTERNAL //! @} FLEXT_OBJCLASS diff --git a/externals/grill/flext/source/flqueue.cpp b/externals/grill/flext/source/flqueue.cpp index 747c4cc8..aaf82fef 100755 --- a/externals/grill/flext/source/flqueue.cpp +++ b/externals/grill/flext/source/flqueue.cpp @@ -84,8 +84,10 @@ static flext::ThrMutex qmutex; static void QWork(bool qlock,bool syslock) { for(;;) { - // since qcnt can only be increased from any other function than QWork - // qc will be a minimum guaranteed number of present queue elements + // Since qcnt can only be increased from any other function than QWork + // qc will be a minimum guaranteed number of present queue elements. + // On the other hand, if new queue elements are added by the methods called + // in the loop, these will be sent in the next tick to avoid recursion overflow. int qc = qcnt; if(!qc) break; -- cgit v1.2.1