Update of /cvsroot/pure-data/externals/grill/flext/source In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5608/source
Modified Files: flbase.cpp flbase.h flbuf.cpp fllib.cpp Log Message: fix for showing attributes on select (and recreate the object on edit) reconsidered flext::buffer:Update build system for flext-based externals added object construction and destruction flags
Index: flbase.cpp =================================================================== RCS file: /cvsroot/pure-data/externals/grill/flext/source/flbase.cpp,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** flbase.cpp 13 Nov 2004 03:30:49 -0000 1.19 --- flbase.cpp 31 Dec 2004 04:58:29 -0000 1.20 *************** *** 45,48 **** --- 45,51 ---- bool flext_obj::process_attributes = false;
+ bool flext_obj::initing = false; + bool flext_obj::exiting = false; + void flext_obj::ProcessAttributes(bool attr) { process_attributes = attr; }
*************** *** 52,59 **** ///////////////////////////////////////////////////////// flext_obj :: FLEXT_CLASSDEF(flext_obj)() ! : x_obj(m_holder) ! , procattr(m_holdattr) ! , init_ok(true) ! , m_name(m_holdname) { #if FLEXT_SYS == FLEXT_SYS_PD --- 55,62 ---- ///////////////////////////////////////////////////////// flext_obj :: FLEXT_CLASSDEF(flext_obj)() ! : x_obj(m_holder) ! , procattr(m_holdattr) ! , init_ok(true) ! , m_name(m_holdname) { #if FLEXT_SYS == FLEXT_SYS_PD
Index: flbase.h =================================================================== RCS file: /cvsroot/pure-data/externals/grill/flext/source/flbase.h,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -d -r1.26 -r1.27 *** flbase.h 21 Jun 2004 13:58:19 -0000 1.26 --- flbase.h 31 Dec 2004 04:58:29 -0000 1.27 *************** *** 220,223 **** --- 220,226 ---- bool init_ok;
+ // flags for init and exit procedure; + static bool initing,exiting; + public:
*************** *** 243,246 **** --- 246,257 ---- bool InitOk() const { return init_ok; }
+ /*! Return true if in object initialization phase + true when in constructor or Init, false when in Finalize + */ + static bool Initing() { return initing; } + + //! Return true if in object destruction phase (Exit or destructor) + static bool Exiting() { return exiting; } + // Definitions for library objects static void lib_init(const char *name,void setupfun(),bool attr);
Index: flbuf.cpp =================================================================== RCS file: /cvsroot/pure-data/externals/grill/flext/source/flbuf.cpp,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** flbuf.cpp 21 Jun 2004 13:58:19 -0000 1.18 --- flbuf.cpp 31 Dec 2004 04:58:29 -0000 1.19 *************** *** 82,86 **** { if (*GetString(sym)) FLEXT_LOG1("buffer: no such array '%s'",GetString(sym)); ! sym = NULL; if(valid) ret = -1; } --- 82,86 ---- { if (*GetString(sym)) FLEXT_LOG1("buffer: no such array '%s'",GetString(sym)); ! // sym = NULL; if(valid) ret = -1; } *************** *** 148,156 **** bool flext::buffer::Update() { ! if(!Ok()) return false;
bool ok = false;
#if FLEXT_SYS == FLEXT_SYS_PD int frames1; t_sample *data1; --- 148,158 ---- bool flext::buffer::Update() { ! // if(!Ok()) return false;
bool ok = false;
#if FLEXT_SYS == FLEXT_SYS_PD + if(!sym || !arr) return data == NULL; + int frames1; t_sample *data1; *************** *** 167,170 **** --- 169,174 ---- } #elif FLEXT_SYS == FLEXT_SYS_MAX + if(!sym) return data == NULL; + if(sym->s_thing) { const _buffer *p = (const _buffer *)sym->s_thing;
Index: fllib.cpp =================================================================== RCS file: /cvsroot/pure-data/externals/grill/flext/source/fllib.cpp,v retrieving revision 1.28 retrieving revision 1.29 diff -C2 -d -r1.28 -r1.29 *** fllib.cpp 16 Dec 2004 05:01:07 -0000 1.28 --- fllib.cpp 31 Dec 2004 04:58:29 -0000 1.29 *************** *** 414,417 **** --- 414,418 ---- flext_obj::m_holdname = s; flext_obj::m_holdattr = lo->attr; + flext_obj::initing = true;
// get actual flext object (newfun calls "new flext_obj()") *************** *** 447,450 **** --- 448,453 ---- ok = obj->data->Init();
+ flext_obj::initing = false; + // call another virtual init function if(ok) ok = obj->data->Finalize(); *************** *** 468,471 **** --- 471,476 ---- }
+ flext_obj::initing = false; + if(!ok) { // there was some init error, free object *************** *** 501,504 **** --- 506,511 ---- if(lcl) { try { + flext_obj::exiting = true; + // call virtual exit function hdr->data->Exit(); *************** *** 516,520 **** error("%s - Unknown exception while destroying object",GetString(name)); } ! } #ifdef FLEXT_DEBUG else --- 523,529 ---- error("%s - Unknown exception while destroying object",GetString(name)); } ! ! flext_obj::exiting = false; ! } #ifdef FLEXT_DEBUG else