Commit 1379c5ac authored by thomas's avatar thomas
Browse files

no message


git-svn-id: https://svn.grrrr.org/ext/trunk@282 4d9ac71a-51e6-0310-8455-cad1006bcd31
parent 75dbd9cd
No preview for this file type
......@@ -80,12 +80,13 @@ Version history:
0.3.3:
- revisited priority stuff for detached threads
- Bind/unbind functions for flext classes (how to do in MaxMSP?)
- Bind/unbind functions for flext classes (in MaxMSP only one object can be bound)
- Made "t_symtype" another synonym for "t_symbol *"
- Added forgotten dsp_free function for MaxMSP
- Fixed forgotten __class__ member for MaxMSP libraries
- Changed basic MaxMSP object to t_pxbox (ok, a bit more memory is used....)
- MaxMSP library can now be loaded from startup folder
- MaxMSP library can now be loaded from startup folder (but can't use aliases)
- if no handler is found for pure anything (just symbol, no args...) try list handler
0.3.2:
- doxygen generated inline documentation / functional reference
......@@ -221,7 +222,6 @@ general:
- check that SetupInOut is only called once
- feed assist function with in/outlet description
- MaxMSP: how to call separate help files for objects in a library?
- PD: enable help files with path specifier (e.g. vasp/vasp_mul.pd)
bugs:
- PD: problems with timed buffer redrawing (takes a lot of cpu time)
......@@ -241,7 +241,6 @@ features:
- manage running threads individually (stop, isrunning?, priority etc.)
premature thoughts:
- interface for scripting language modules? (python?)
- GUI objects
......
......@@ -172,7 +172,7 @@ void flext_base::buffer::Frames(int fr,bool keep)
t_atom msg;
_buffer *buf = (_buffer *)sym->s_thing;
// b_msr reflects buffer sample rate... is this what we want?
// Max bug: adding 0.small value 0.001 to get right sample count
// Max bug: adding small value 0.001 to get right sample count
float ms = fr/buf->b_msr+0.001;
SetFloat(msg,ms);
......@@ -236,9 +236,11 @@ void flext_base::buffer::Dirty(bool force)
#ifdef PD
void flext_base::buffer::cb_tick(buffer *b)
{
// t_garray *a = (t_garray *)pd_findbyclass(b->sym, garray_class);
if(b->arr) garray_redraw(b->arr);
// else bug("tabwrite_tilde_tick");
#ifdef _DEBUG
else error("buffer: array is NULL");
#endif
if(b->isdirty && b->interval) {
b->isdirty = false;
b->ticking = true;
......
......@@ -377,15 +377,22 @@ public:
// --- bind/unbind ---------------------------------------
#ifdef PD
void Bind(const t_symbol *s) { pd_bind(&thisHdr()->ob_pd,const_cast<t_symbol *>(s)); }
void Bind(const char *c) { Bind(MakeSymbol(c)); }
void Unbind(const t_symbol *s) { pd_unbind(&thisHdr()->ob_pd,const_cast<t_symbol *>(s)); }
void Unbind(const char *c) { Unbind(MakeSymbol(c)); }
//! Bind object to a symbol
bool Bind(const t_symbol *s) { pd_bind(&thisHdr()->ob_pd,const_cast<t_symbol *>(s)); return true; }
//! Unbind object from a symbol
bool Unbind(const t_symbol *s) { pd_unbind(&thisHdr()->ob_pd,const_cast<t_symbol *>(s)); return true; }
#else
//#pragma message("Bind/Unbind not implemented!");
//! Bind object to a symbol
bool Bind(const t_symbol *s) { if(s->s_thing) return false; else { const_cast<t_symbol *>(s)->s_thing = (t_object *)thisHdr(); return true; } }
//! Unbind object from a symbol
bool Unbind(const t_symbol *s) { if(s->s_thing != (t_object *)thisHdr()) return false; else { const_cast<t_symbol *>(s)->s_thing = NULL; return true; } }
#endif
//! Bind object to a symbol (as string)
bool Bind(const char *c) { return Bind(MakeSymbol(c)); }
//! Unbind object from a symbol (as string)
bool Unbind(const char *c) { return Unbind(MakeSymbol(c)); }
/*
// Low level
//! Bind object to a symbol
......@@ -394,7 +401,7 @@ public:
static void DoBind(const t_symbol *s,flext_obj *o);
//! Get bound object of a symbol
static t_class **GetBound(const t_symbol *s) { return (t_class **)s->s_thing; }
*/
// --- atom stuff ----------------------------------------
//! Set atom from another atom
......
......@@ -677,7 +677,7 @@ bool flext_base::m_methodmain(int inlet,const t_symbol *s,int argc,t_atom *argv)
#endif
// If float or int message is not explicitly handled: try list handler instead
if(!ret && !trap && argc == 1 && (s == sym_float
if(!ret && !trap && argc == 1 && (s == sym_float
#ifdef MAXMSP
|| s == sym_int
#endif
......@@ -686,14 +686,23 @@ bool flext_base::m_methodmain(int inlet,const t_symbol *s,int argc,t_atom *argv)
if(s == sym_float)
SetFloat(list,GetFloat(argv[0]));
#ifdef MAXMSP
else
else if(s == sym_int)
SetInt(list,GetInt(argv[0]));
#endif
trap = true;
ret = m_methodmain(inlet,sym_list,1,&list);
trap = false;
}
// If symbol message (pure anything without args) is not explicitly handled: try list handler instead
if(!ret && !trap && argc == 0) {
t_atom list;
SetSymbol(list,s);
trap = true;
ret = m_methodmain(inlet,sym_list,1,&list);
trap = false;
}
// if distmsgs is switched on then distribute list elements over inlets (Max/MSP behavior)
if(!ret && distmsgs && !trap && inlet == 0 && s == sym_list && insigs <= 1) {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment