aboutsummaryrefslogtreecommitdiff
path: root/externals/grill/flext/source/flproxy.cpp
diff options
context:
space:
mode:
authorThomas Grill <xovo@users.sourceforge.net>2006-10-31 00:30:57 +0000
committerThomas Grill <xovo@users.sourceforge.net>2006-10-31 00:30:57 +0000
commitc9f63273e395c7c8f5a2c112bddea09735b6518e (patch)
tree0bee4fe4ea3509fb834f61981afb37edbec20ed2 /externals/grill/flext/source/flproxy.cpp
parenta0dd272b71c0212515cb4a834a109264448c02ae (diff)
PD: possibility to create DSP objects without main DSP inlet (use FLEXT_DSP0_NEW or similar)
fixed buggy memory deallocation for AtomListStatic svn path=/trunk/; revision=6196
Diffstat (limited to 'externals/grill/flext/source/flproxy.cpp')
-rwxr-xr-xexternals/grill/flext/source/flproxy.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/externals/grill/flext/source/flproxy.cpp b/externals/grill/flext/source/flproxy.cpp
index 08bf1352..6126d4b7 100755
--- a/externals/grill/flext/source/flproxy.cpp
+++ b/externals/grill/flext/source/flproxy.cpp
@@ -79,6 +79,26 @@ void flext_base::cb_pointer(flext_hdr *c,const t_gpointer *p)
void flext_base::cb_anything(flext_hdr *c,const t_symbol *s,int argc,t_atom *argv)
{
+ if(UNLIKELY(!s)) {
+ // apparently, this happens only in one case... object is a DSP object, but has no main DSP inlet...
+
+ // interpret tag from args
+ if(!argc)
+ s = sym_bang;
+ else if(argc == 1) {
+ if(IsFloat(*argv))
+ s = sym_float;
+ else if(IsSymbol(*argv))
+ s = sym_symbol;
+ else if(IsPointer(*argv))
+ s = sym_pointer;
+ else
+ FLEXT_ASSERT(false);
+ }
+ else
+ s = sym_list;
+ }
+
thisObject(c)->CbMethodHandler(0,s,argc,argv);
}