From dd500deadc8cc4577a305a9f1fe438786671f9e6 Mon Sep 17 00:00:00 2001 From: Thomas Grill Date: Fri, 12 Dec 2003 03:41:32 +0000 Subject: "" svn path=/trunk/; revision=1217 --- externals/grill/dyn/readme.txt | 1 + externals/grill/flext/changes.txt | 12 +- externals/grill/flext/config-pd-cygwin.txt | 2 +- externals/grill/flext/flext.doxy | 58 ++++--- externals/grill/flext/source/flattr_ed.cpp | 56 +++--- externals/grill/flext/source/flbase.h | 9 +- externals/grill/flext/source/fldefs.h | 6 +- externals/grill/flext/source/fldefs_attradd.h | 2 + externals/grill/flext/source/fldefs_attrcb.h | 3 + externals/grill/flext/source/fldefs_attrvar.h | 49 +++--- externals/grill/flext/source/fldefs_methadd.h | 2 + externals/grill/flext/source/fldefs_methcall.h | 1 + externals/grill/flext/source/fldefs_methcb.h | 1 + externals/grill/flext/source/fldefs_setup.h | 4 +- externals/grill/flext/source/fldoxygen.h | 2 +- externals/grill/flext/source/flqueue.cpp | 18 +- externals/grill/flext/source/flsupport.h | 7 +- externals/grill/pool/pool.cpp | 2 +- externals/grill/pool/pool.cw | Bin 202236 -> 202236 bytes externals/grill/py/pd/attr-1.pd | 32 ++++ externals/grill/py/py.dsp | 229 ------------------------- externals/grill/py/source/bound.cpp | 3 + externals/grill/xsample/config-pd-linux.txt | 1 + externals/grill/xsample/maxmsp/xgroove~.help | Bin 7457 -> 7572 bytes externals/grill/xsample/xsample.cw | Bin 394881 -> 394881 bytes 25 files changed, 174 insertions(+), 326 deletions(-) create mode 100644 externals/grill/py/pd/attr-1.pd delete mode 100644 externals/grill/py/py.dsp (limited to 'externals') diff --git a/externals/grill/dyn/readme.txt b/externals/grill/dyn/readme.txt index a757e55a..09b7c45f 100644 --- a/externals/grill/dyn/readme.txt +++ b/externals/grill/dyn/readme.txt @@ -65,3 +65,4 @@ CHANGES: TODO: -------- - Hash table for object tags +- add mute attribute diff --git a/externals/grill/flext/changes.txt b/externals/grill/flext/changes.txt index 84ebac86..4c0eca4b 100644 --- a/externals/grill/flext/changes.txt +++ b/externals/grill/flext/changes.txt @@ -23,7 +23,6 @@ Version history: - added "getmethods" message (for attribute-enabled externals) to list methods for a specified inlet (default = 0) - "getattributes" or "getmethods" output lists are now alphabethically sorted - flext::StopThread function to terminate running threads (started with LaunchThread) -- added flext::post() and flext::error() console printing (thread-safe) - added flext::CmpAtom and AtomList::operator < methods ... useful for using lists as keys for STL - make use of new PD thread locking (PD functions sys_lock() and sys_unlock()), queue messages only if necessary - better FLEXT_OSAPI resolution @@ -35,6 +34,7 @@ Version history: - moved memory functions and console output from flext to super-base-class flext_root and derived all helper classes from that - changed FLEXT_THREAD_X: wrappers doesn't delete the passed data pointer anymore -> the called method is responsible for that (and it knows the type....) - enabled binding of more than one function to a symbol and added flext_base::GetBoundMethod +- native support for Windows threading model 0.4.4: - fixed deadly bug for Max/MSP method-to-symbol-binding proxies @@ -277,11 +277,12 @@ general: - add log messages for debugging version - use PD's t_float and t_int types (or comparable for 32-Bit safety) -- make links flext.a -> libflext.a for compatibility - - add double handlers - add signal in/out connection query function +- support for Max qelem style + + bugs: - attributes and attribute editor saving with patcher arguments (like $0-gugu ) @@ -290,8 +291,9 @@ bugs: - Max rounding bug ... buffer resize could be one sample less! - flext_dsp: Max/MSP doesn't correctly report in/out channel counts -- new called in a flext-based class member function doesn _NOT_ call flext::operator new. - how can we achieve that???? +- linker problems between MFC libraries and global new and delete overloadings +- flext::post and flext::error should print via a worker thread + tests: - PD: figure out what "pointer" messages do and where they occur diff --git a/externals/grill/flext/config-pd-cygwin.txt b/externals/grill/flext/config-pd-cygwin.txt index dec1ebc4..50a72db0 100644 --- a/externals/grill/flext/config-pd-cygwin.txt +++ b/externals/grill/flext/config-pd-cygwin.txt @@ -25,4 +25,4 @@ INSTDIR=${PDPATH}/flext # additional compiler flags # (check if they fit for your system!) -UFLAGS=-mcpu=pentium3 -msse \ No newline at end of file +UFLAGS=-mcpu=pentium4 -msse \ No newline at end of file diff --git a/externals/grill/flext/flext.doxy b/externals/grill/flext/flext.doxy index 8b245668..46f973d6 100644 --- a/externals/grill/flext/flext.doxy +++ b/externals/grill/flext/flext.doxy @@ -1,12 +1,34 @@ -# Doxyfile 1.3-rc2 +# Doxyfile 1.3.5 #--------------------------------------------------------------------------- -# General configuration options +# Project related configuration options #--------------------------------------------------------------------------- PROJECT_NAME = flext -PROJECT_NUMBER = "version 0.4.4" +PROJECT_NUMBER = "version 0.5.0" OUTPUT_DIRECTORY = f:/prog/max/flext/doc/ OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = YES +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = YES +INHERIT_DOCS = YES +DISTRIBUTE_GROUP_DOC = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = YES +OPTIMIZE_OUTPUT_JAVA = NO +SUBGROUPING = YES +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- EXTRACT_ALL = NO EXTRACT_PRIVATE = NO EXTRACT_STATIC = NO @@ -15,35 +37,18 @@ HIDE_UNDOC_MEMBERS = YES HIDE_UNDOC_CLASSES = YES HIDE_FRIEND_COMPOUNDS = NO HIDE_IN_BODY_DOCS = NO -BRIEF_MEMBER_DESC = YES -REPEAT_BRIEF = YES -ALWAYS_DETAILED_SEC = NO -INLINE_INHERITED_MEMB = NO -FULL_PATH_NAMES = NO -STRIP_FROM_PATH = INTERNAL_DOCS = YES CASE_SENSE_NAMES = YES -SHORT_NAMES = NO HIDE_SCOPE_NAMES = NO -VERBATIM_HEADERS = NO SHOW_INCLUDE_FILES = YES -JAVADOC_AUTOBRIEF = NO -MULTILINE_CPP_IS_BRIEF = NO -DETAILS_AT_TOP = YES -INHERIT_DOCS = YES INLINE_INFO = YES SORT_MEMBER_DOCS = YES -DISTRIBUTE_GROUP_DOC = NO -TAB_SIZE = 8 GENERATE_TODOLIST = YES GENERATE_TESTLIST = YES GENERATE_BUGLIST = YES GENERATE_DEPRECATEDLIST= YES -ALIASES = ENABLED_SECTIONS = MAX_INITIALIZER_LINES = 30 -OPTIMIZE_OUTPUT_FOR_C = YES -OPTIMIZE_OUTPUT_JAVA = NO SHOW_USED_FILES = YES #--------------------------------------------------------------------------- # configuration options related to warning and progress messages @@ -77,6 +82,7 @@ INLINE_SOURCES = NO STRIP_CODE_COMMENTS = YES REFERENCED_BY_RELATION = YES REFERENCES_RELATION = YES +VERBATIM_HEADERS = NO #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- @@ -117,6 +123,7 @@ LATEX_HEADER = PDF_HYPERLINKS = NO USE_PDFLATEX = NO LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- @@ -137,8 +144,10 @@ MAN_LINKS = NO # configuration options related to the XML output #--------------------------------------------------------------------------- GENERATE_XML = NO +XML_OUTPUT = xml XML_SCHEMA = XML_DTD = +XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- @@ -183,24 +192,21 @@ HIDE_UNDOC_RELATIONS = YES HAVE_DOT = NO CLASS_GRAPH = YES COLLABORATION_GRAPH = YES +UML_LOOK = NO TEMPLATE_RELATIONS = YES INCLUDE_GRAPH = YES INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO GRAPHICAL_HIERARCHY = YES DOT_IMAGE_FORMAT = png DOT_PATH = DOTFILE_DIRS = MAX_DOT_GRAPH_WIDTH = 1024 MAX_DOT_GRAPH_HEIGHT = 1024 +MAX_DOT_GRAPH_DEPTH = 0 GENERATE_LEGEND = YES DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::addtions related to the search engine #--------------------------------------------------------------------------- SEARCHENGINE = NO -CGI_NAME = search.cgi -CGI_URL = -DOC_URL = -DOC_ABSPATH = -BIN_ABSPATH = /usr/local/bin/ -EXT_DOC_PATHS = diff --git a/externals/grill/flext/source/flattr_ed.cpp b/externals/grill/flext/source/flattr_ed.cpp index fb6183ed..6b2b1d96 100644 --- a/externals/grill/flext/source/flattr_ed.cpp +++ b/externals/grill/flext/source/flattr_ed.cpp @@ -64,9 +64,6 @@ void flext_base::SetAttrEditor(t_classid c) widgetbehavior.w_clickfn = text_widgetbehavior.w_clickfn; #endif - widgetbehavior.w_visfn = cb_GfxVis; - class_setwidget(c, &widgetbehavior); - #if PD_MINOR_VERSION >= 37 class_setpropertiesfn(c,cb_GfxProperties); class_setsavefn(c,cb_GfxSave); @@ -75,6 +72,9 @@ void flext_base::SetAttrEditor(t_classid c) widgetbehavior.w_savefn = cb_GfxSave; #endif + widgetbehavior.w_visfn = cb_GfxVis; + class_setwidget(c, &widgetbehavior); + // generate the script for the property dialog sys_gui( @@ -411,29 +411,33 @@ void flext_base::cb_GfxProperties(t_gobj *c, t_glist *) //! Strip the attributes off the object command line void flext_base::cb_GfxVis(t_gobj *c, t_glist *gl, int vis) { - t_text *x = (t_text *)c; - - FLEXT_ASSERT(x->te_binbuf); - - int argc = binbuf_getnatom(x->te_binbuf); - t_atom *argv = binbuf_getvec(x->te_binbuf); - int cnt = CheckAttrib(argc,argv); - - if(cnt) { - t_binbuf *nb = binbuf_new(); - binbuf_restore(nb,cnt,argv); - binbuf_free(x->te_binbuf); - x->te_binbuf = nb; - } - - t_rtext *rt = glist_findrtext(gl,x); - rtext_retext(rt); - -#ifdef FLEXT_CLONEWIDGET - text_widgetbehavior.w_visfn(c,gl,vis); -#else - ori_vis(c,gl,vis); -#endif + // show object if it's not a GOP + if(!gl->gl_isgraph || gl->gl_havewindow) { + + t_text *x = (t_text *)c; + FLEXT_ASSERT(x->te_binbuf); + + int argc = binbuf_getnatom(x->te_binbuf); + t_atom *argv = binbuf_getvec(x->te_binbuf); + int cnt = CheckAttrib(argc,argv); + + if(cnt) { + t_binbuf *nb = binbuf_new(); + binbuf_restore(nb,cnt,argv); + binbuf_free(x->te_binbuf); + x->te_binbuf = nb; + } + + t_rtext *rt = glist_findrtext(gl,x); + rtext_retext(rt); + + // now display the changed text with the normal drawing function + #ifdef FLEXT_CLONEWIDGET + text_widgetbehavior.w_visfn(c,gl,vis); + #else + ori_vis(c,gl,vis); + #endif + } } static void BinbufAdd(t_binbuf *b,const t_atom &at) diff --git a/externals/grill/flext/source/flbase.h b/externals/grill/flext/source/flbase.h index 789a0855..594bfbfc 100644 --- a/externals/grill/flext/source/flbase.h +++ b/externals/grill/flext/source/flbase.h @@ -139,9 +139,8 @@ class FLEXT_SHARE FLEXT_CLASSDEF(flext_obj): t_canvas *thisCanvas() const { return m_canvas; } //! Get the PD or Max/MSP object - t_sigobj *thisHdr() { return &x_obj->obj; } - //! Get the PD or Max/MSP object - const t_sigobj *thisHdr() const { return &x_obj->obj; } + t_sigobj *thisHdr() { FLEXT_ASSERT(x_obj); return &x_obj->obj; } + const t_sigobj *thisHdr() const { FLEXT_ASSERT(x_obj); return &x_obj->obj; } //! Get the class name (as a string) const char *thisName() const { return GetString(m_name); } //! Get the class name (as a symbol) @@ -150,9 +149,9 @@ class FLEXT_SHARE FLEXT_CLASSDEF(flext_obj): //! Get the class pointer #if FLEXT_SYS == FLEXT_SYS_PD - t_class *thisClass() const { return (t_class *)((t_object *)(x_obj))->te_g.g_pd; } + t_class *thisClass() const { FLEXT_ASSERT(x_obj); return (t_class *)((t_object *)(x_obj))->te_g.g_pd; } #elif FLEXT_SYS == FLEXT_SYS_MAX - t_class *thisClass() const { return (t_class *)(((t_tinyobject *)x_obj)->t_messlist-1); } + t_class *thisClass() const { FLEXT_ASSERT(x_obj); return (t_class *)(((t_tinyobject *)x_obj)->t_messlist-1); } #elif FLEXT_SYS == FLEXT_SYS_JMAX t_class *thisClass() const { return fts_object_get_class((fts_object_t *)thisHdr()); } #else diff --git a/externals/grill/flext/source/fldefs.h b/externals/grill/flext/source/fldefs.h index 66d50c17..f0e37ab8 100644 --- a/externals/grill/flext/source/fldefs.h +++ b/externals/grill/flext/source/fldefs.h @@ -29,6 +29,8 @@ WARRANTIES, see the file, "license.txt," in this distribution. #define FLEXT_CAST static_cast #endif +//! @} FLEXT_DEFS + #include "fldefs_hdr.h" #include "fldefs_setup.h" @@ -65,8 +67,4 @@ WARRANTIES, see the file, "license.txt," in this distribution. #endif // FLEXT_ATTRIBUTES - - -//! @} FLEXT_DEFS - #endif // __FLEXT_DEFS_H diff --git a/externals/grill/flext/source/fldefs_attradd.h b/externals/grill/flext/source/fldefs_attradd.h index db0ce82b..50aef3cb 100644 --- a/externals/grill/flext/source/fldefs_attradd.h +++ b/externals/grill/flext/source/fldefs_attradd.h @@ -18,6 +18,7 @@ WARRANTIES, see the file, "license.txt," in this distribution. /*! \defgroup FLEXT_D_CADDATTR Announce object attributes at class scope + \ingroup FLEXT_D_ATTRIB \note These can only be used at class construction time @{ */ @@ -67,6 +68,7 @@ AddAttrib(CL,NAME,(bool (*)(flext_base *,int &))(FLEXT_GET_PRE(FUN)),(bool (*)(f /*! \defgroup FLEXT_D_ADDATTR Announce object attributes + \ingroup FLEXT_D_ATTRIB \note These can only be used at object construction time \note (in constructor or in Init() function before call to parent's Init()) @{ diff --git a/externals/grill/flext/source/fldefs_attrcb.h b/externals/grill/flext/source/fldefs_attrcb.h index 1c147613..cf9aec4c 100644 --- a/externals/grill/flext/source/fldefs_attrcb.h +++ b/externals/grill/flext/source/fldefs_attrcb.h @@ -35,6 +35,7 @@ static bool FLEXT_GET_PRE(FUN)(flext_base *c,TP &arg) \ /*! \defgroup FLEXT_DA_CALLSET Definition of attribute set handlers + \ingroup FLEXT_D_ATTRIB @{ */ @@ -75,6 +76,7 @@ static bool FLEXT_SET_PRE(FUN)(flext_base *c,AtomList *&arg) \ //! @} FLEXT_DA_CALLSET /*! \defgroup FLEXT_DA_CALLGET Definition of attribute get handlers + \ingroup FLEXT_D_ATTRIB @{ */ @@ -116,6 +118,7 @@ static bool FLEXT_GET_PRE(FUN)(flext_base *c,AtomList *&arg) \ /*! \defgroup FLEXT_DA_CALLVAR Definition of attribute transfer handlers (both get and set) + \ingroup FLEXT_D_ATTRIB @{ */ diff --git a/externals/grill/flext/source/fldefs_attrvar.h b/externals/grill/flext/source/fldefs_attrvar.h index 89592c29..c63fbb35 100644 --- a/externals/grill/flext/source/fldefs_attrvar.h +++ b/externals/grill/flext/source/fldefs_attrvar.h @@ -17,14 +17,14 @@ WARRANTIES, see the file, "license.txt," in this distribution. #define __FLEXT_DEFS_ATTRVAR_H -/*! \brief Declare an implicite attribute set function +/*! \brief Declare an implicit attribute set function \internal */ #define FLEXT_ATTRSET_(VAR,TP) \ static bool FLEXT_SET_PRE(VAR)(flext_base *c,TP &arg) \ { FLEXT_CAST(c)->VAR = arg; return true; } -/*! \brief Declare an implicite attribute get function +/*! \brief Declare an implicit attribute get function \internal */ #define FLEXT_ATTRGET_(VAR,TP) \ @@ -33,26 +33,27 @@ static bool FLEXT_GET_PRE(VAR)(flext_base *c,TP &arg) \ -/*! \defgroup FLEXT_DA_ATTRSET Definition of implicite attribute set handlers +/*! \defgroup FLEXT_DA_ATTRSET Definition of implicit attribute set handlers + \ingroup FLEXT_D_ATTRIB @{ */ -//! Declare an implicite set function for a float attribute +//! Declare an implicit set function for a float attribute #define FLEXT_ATTRSET_F(VAR) \ \ FLEXT_ATTRSET_(VAR,float) -//! Declare an implicite set function for an integer attribute +//! Declare an implicit set function for an integer attribute #define FLEXT_ATTRSET_I(VAR) \ \ FLEXT_ATTRSET_(VAR,int) -//! Declare an implicite set function for a symbol attribute +//! Declare an implicit set function for a symbol attribute #define FLEXT_ATTRSET_S(VAR) \ \ FLEXT_ATTRSET_(VAR,const t_symbol *) -//! Declare an implicite set function for a boolean attribute +//! Declare an implicit set function for a boolean attribute #define FLEXT_ATTRSET_B(VAR) \ \ FLEXT_ATTRSET_(VAR,bool) @@ -61,38 +62,39 @@ static bool FLEXT_SET_PRE(VAR)(flext_base *c,int &arg) \ { FLEXT_CAST(c)->VAR = arg != 0; return true; } */ -//! Declare an implicite set function for an enum attribute +//! Declare an implicit set function for an enum attribute #define FLEXT_ATTRSET_E(VAR,TP) \ \ FLEXT_ATTRSET_(VAR,TP) -//! Declare an implicite set function for a variable list attribute +//! Declare an implicit set function for a variable list attribute #define FLEXT_ATTRSET_V(VAR) \ static bool FLEXT_SET_PRE(VAR)(flext_base *c,AtomList *&arg) \ { FLEXT_CAST(c)->VAR = *arg; return true; } //! @} FLEXT_DA_ATTRSET -/*! \defgroup FLEXT_DA_ATTRGET Definition of implicite attribute get handlers +/*! \defgroup FLEXT_DA_ATTRGET Definition of implicit attribute get handlers + \ingroup FLEXT_D_ATTRIB @{ */ -//! Declare an implicite get function for a float attribute +//! Declare an implicit get function for a float attribute #define FLEXT_ATTRGET_F(VAR) \ \ FLEXT_ATTRGET_(VAR,float) -//! Declare an implicite get function for an integer attribute +//! Declare an implicit get function for an integer attribute #define FLEXT_ATTRGET_I(VAR) \ \ FLEXT_ATTRGET_(VAR,int) -//! Declare an implicite get function for a symbol attribute +//! Declare an implicit get function for a symbol attribute #define FLEXT_ATTRGET_S(VAR) \ \ FLEXT_ATTRGET_(VAR,const t_symbol *) -//! Declare an implicite get function for a boolean attribute +//! Declare an implicit get function for a boolean attribute #define FLEXT_ATTRGET_B(VAR) \ \ FLEXT_ATTRGET_(VAR,bool) @@ -101,12 +103,12 @@ static bool FLEXT_GET_PRE(VAR)(flext_base *c,int &arg) \ { arg = FLEXT_CAST(c)->VAR?1:0; return true; } */ -//! Declare an implicite get function for an enum attribute +//! Declare an implicit get function for an enum attribute #define FLEXT_ATTRGET_E(VAR,TP) \ \ FLEXT_ATTRGET_(VAR,TP) -//! Declare an implicite get function for a variable list attribute +//! Declare an implicit get function for a variable list attribute #define FLEXT_ATTRGET_V(VAR) \ static bool FLEXT_GET_PRE(VAR)(flext_base *c,AtomList *&arg) \ { *arg = FLEXT_CAST(c)->VAR; return true; } @@ -114,36 +116,37 @@ static bool FLEXT_GET_PRE(VAR)(flext_base *c,AtomList *&arg) \ //! @} FLEXT_DA_ATTRGET -/*! \defgroup FLEXT_DA_ATTRVAR Definition of implicite attribute transfer handlers (both get and set) +/*! \defgroup FLEXT_DA_ATTRVAR Definition of implicit attribute transfer handlers (both get and set) + \ingroup FLEXT_D_ATTRIB @{ */ -//! Declare both implicite get and set functions for a float attribute +//! Declare both implicit get and set functions for a float attribute #define FLEXT_ATTRVAR_F(VAR) \ \ FLEXT_ATTRGET_F(VAR) FLEXT_ATTRSET_F(VAR) -//! Declare both implicite get and set functions for an integer attribute +//! Declare both implicit get and set functions for an integer attribute #define FLEXT_ATTRVAR_I(VAR) \ \ FLEXT_ATTRGET_I(VAR) FLEXT_ATTRSET_I(VAR) -//! Declare both implicite get and set functions for a symbol attribute +//! Declare both implicit get and set functions for a symbol attribute #define FLEXT_ATTRVAR_S(VAR) \ \ FLEXT_ATTRGET_S(VAR) FLEXT_ATTRSET_S(VAR) -//! Declare both implicite get and set functions for a boolean attribute +//! Declare both implicit get and set functions for a boolean attribute #define FLEXT_ATTRVAR_B(VAR) \ \ FLEXT_ATTRGET_B(VAR) FLEXT_ATTRSET_B(VAR) -//! Declare both implicite get and set functions for an enum attribute +//! Declare both implicit get and set functions for an enum attribute #define FLEXT_ATTRVAR_E(VAR,TP) \ \ FLEXT_ATTRGET_(VAR,TP) FLEXT_ATTRSET_(VAR,TP) -//! Declare both implicite get and set functions for a variable list attribute +//! Declare both implicit get and set functions for a variable list attribute #define FLEXT_ATTRVAR_V(VAR) \ \ FLEXT_ATTRGET_V(VAR) FLEXT_ATTRSET_V(VAR) diff --git a/externals/grill/flext/source/fldefs_methadd.h b/externals/grill/flext/source/fldefs_methadd.h index f2f2d62b..e9cb93d4 100644 --- a/externals/grill/flext/source/fldefs_methadd.h +++ b/externals/grill/flext/source/fldefs_methadd.h @@ -18,6 +18,7 @@ WARRANTIES, see the file, "license.txt," in this distribution. /*! \defgroup FLEXT_D_CADDMETHOD Add flext methods within class scope + \ingroup FLEXT_D_METHOD \note These can only be used at class construction time @{ */ @@ -108,6 +109,7 @@ FLEXT_CADDMETHOD_3(CL,IX,M_TAG,M_FUN,int,int,int) /*! \defgroup FLEXT_D_ADDMETHOD Add flext methods + \ingroup FLEXT_D_METHOD \note These can only be used at object construction time \note (in constructor or in Init() function before call to parent's Init()) @{ diff --git a/externals/grill/flext/source/fldefs_methcall.h b/externals/grill/flext/source/fldefs_methcall.h index 8085e9d9..8b6e1bde 100644 --- a/externals/grill/flext/source/fldefs_methcall.h +++ b/externals/grill/flext/source/fldefs_methcall.h @@ -18,6 +18,7 @@ WARRANTIES, see the file, "license.txt," in this distribution. /*! \defgroup FLEXT_D_CALLMETHOD Call flext methods manually + \ingroup FLEXT_D_METHOD @{ */ diff --git a/externals/grill/flext/source/fldefs_methcb.h b/externals/grill/flext/source/fldefs_methcb.h index de279d92..45763f59 100644 --- a/externals/grill/flext/source/fldefs_methcb.h +++ b/externals/grill/flext/source/fldefs_methcb.h @@ -18,6 +18,7 @@ WARRANTIES, see the file, "license.txt," in this distribution. /*! \defgroup FLEXT_D_CALLBACK Declare callbacks for class methods + \ingroup FLEXT_D_METHOD @{ */ diff --git a/externals/grill/flext/source/fldefs_setup.h b/externals/grill/flext/source/fldefs_setup.h index e00cc943..255b18ad 100644 --- a/externals/grill/flext/source/fldefs_setup.h +++ b/externals/grill/flext/source/fldefs_setup.h @@ -8,7 +8,7 @@ WARRANTIES, see the file, "license.txt," in this distribution. */ -/*! \file fldef_setup.h +/*! \file fldefs_setup.h \brief This file contains all #defines for actual usage */ @@ -27,6 +27,8 @@ WARRANTIES, see the file, "license.txt," in this distribution. - There may be additional names (aliases) appened, separated by spaces - There may be a help path prepended, separated by a colon - This help path doesn't work for Max/MSP. There you'll have to use a object mapping file (Max/MSP version >= 4.2) + + @{ */ diff --git a/externals/grill/flext/source/fldoxygen.h b/externals/grill/flext/source/fldoxygen.h index 202176ea..27b000c0 100644 --- a/externals/grill/flext/source/fldoxygen.h +++ b/externals/grill/flext/source/fldoxygen.h @@ -150,7 +150,7 @@ private: For each method that shall be exposed to the realtime-system (for receiving messages) and every attribute (for setting and getting values) callbacks have to be set up. -The functions in the groups "\ref FLEXT_D_CALLBACK" and "\ref FLEXT_D_ATTRIB" allow for their +The functions in the groups \ref FLEXT_D_CALLBACK and \ref FLEXT_D_ATTRIB allow for their convenient definition. \verbatim diff --git a/externals/grill/flext/source/flqueue.cpp b/externals/grill/flext/source/flqueue.cpp index 2d10aeee..747c4cc8 100755 --- a/externals/grill/flext/source/flqueue.cpp +++ b/externals/grill/flext/source/flqueue.cpp @@ -66,8 +66,8 @@ void qmsg::Clear() tp = tp_none; } -static int qcnt = 0; -static qmsg *qhead = NULL,*qtail = NULL; +static volatile int qcnt = 0; +static qmsg *volatile qhead = NULL,*volatile qtail = NULL; #ifdef FLEXT_QTHR static flext::ThrCond qthrcond; @@ -275,13 +275,15 @@ void flext_base::StartQueue() void flext_base::ToQueueBang(int o) const { - qmsg *m = new qmsg(const_cast(this)); + FLEXT_ASSERT(o >= 0); + qmsg *m = new qmsg(const_cast(this)); m->SetBang(o); Queue(m); } void flext_base::ToQueueFloat(int o,float f) const { + FLEXT_ASSERT(o >= 0); qmsg *m = new qmsg(const_cast(this)); m->SetFloat(o,f); Queue(m); @@ -289,6 +291,7 @@ void flext_base::ToQueueFloat(int o,float f) const void flext_base::ToQueueInt(int o,int f) const { + FLEXT_ASSERT(o >= 0); qmsg *m = new qmsg(const_cast(this)); m->SetInt(o,f); Queue(m); @@ -296,6 +299,7 @@ void flext_base::ToQueueInt(int o,int f) const void flext_base::ToQueueSymbol(int o,const t_symbol *s) const { + FLEXT_ASSERT(o >= 0); qmsg *m = new qmsg(const_cast(this)); m->SetSymbol(o,s); Queue(m); @@ -303,6 +307,7 @@ void flext_base::ToQueueSymbol(int o,const t_symbol *s) const void flext_base::ToQueueList(int o,int argc,const t_atom *argv) const { + FLEXT_ASSERT(o >= 0); qmsg *m = new qmsg(const_cast(this)); m->SetList(o,argc,argv); Queue(m); @@ -310,6 +315,7 @@ void flext_base::ToQueueList(int o,int argc,const t_atom *argv) const void flext_base::ToQueueAnything(int o,const t_symbol *s,int argc,const t_atom *argv) const { + FLEXT_ASSERT(o >= 0); qmsg *m = new qmsg(const_cast(this)); m->SetAny(o,s,argc,argv); Queue(m); @@ -318,31 +324,37 @@ void flext_base::ToQueueAnything(int o,const t_symbol *s,int argc,const t_atom * void flext_base::ToSelfBang(int n) const { + FLEXT_ASSERT(n >= 0); ToQueueBang(-1-n); } void flext_base::ToSelfFloat(int n,float f) const { + FLEXT_ASSERT(n >= 0); ToQueueFloat(-1-n,f); } void flext_base::ToSelfInt(int n,int f) const { + FLEXT_ASSERT(n >= 0); ToQueueInt(-1-n,f); } void flext_base::ToSelfSymbol(int n,const t_symbol *s) const { + FLEXT_ASSERT(n >= 0); ToQueueSymbol(-1-n,s); } void flext_base::ToSelfList(int n,int argc,const t_atom *argv) const { + FLEXT_ASSERT(n >= 0); ToQueueList(-1-n,argc,argv); } void flext_base::ToSelfAnything(int n,const t_symbol *s,int argc,const t_atom *argv) const { + FLEXT_ASSERT(n >= 0); ToQueueAnything(-1-n,s,argc,argv); } diff --git a/externals/grill/flext/source/flsupport.h b/externals/grill/flext/source/flsupport.h index b135b613..283466ac 100644 --- a/externals/grill/flext/source/flsupport.h +++ b/externals/grill/flext/source/flsupport.h @@ -18,6 +18,10 @@ WARRANTIES, see the file, "license.txt," in this distribution. #include "flstdc.h" #include +/*! \defgroup FLEXT_SUPPORT Flext support classes + @{ +*/ + class FLEXT_SHARE FLEXT_CLASSDEF(flext_root); typedef class FLEXT_CLASSDEF(flext_root) flext_root; @@ -65,6 +69,7 @@ public: //! @} FLEXT_S_MEMORY }; + #if !defined(_MSC_VER) && !defined(__BORLANDC__) #define NEWTHROW throw(std::bad_alloc) #define DELTHROW throw() @@ -1106,6 +1111,6 @@ inline bool operator <=(const t_atom &a,const t_atom &b) { return FLEXT_CLASSDEF inline bool operator >(const t_atom &a,const t_atom &b) { return FLEXT_CLASSDEF(flext)::CmpAtom(a,b) > 0; } inline bool operator >=(const t_atom &a,const t_atom &b) { return FLEXT_CLASSDEF(flext)::CmpAtom(a,b) >= 0; } - +//! @} // FLEXT_SUPPORT #endif diff --git a/externals/grill/pool/pool.cpp b/externals/grill/pool/pool.cpp index 52c6a60c..d7491c0d 100644 --- a/externals/grill/pool/pool.cpp +++ b/externals/grill/pool/pool.cpp @@ -688,7 +688,7 @@ BL pooldir::LdDirXML(istream &is,I depth,BL mkdir) } else if(tag.type == xmltag::t_end) { if(d.Count()) - d.Set(d.Count()-1,d.Atoms(),0,true); + d.Part(0,d.Count()-1); else post("pool - superfluous in XML data"); } diff --git a/externals/grill/pool/pool.cw b/externals/grill/pool/pool.cw index 0169ea73..8f88ff0c 100755 Binary files a/externals/grill/pool/pool.cw and b/externals/grill/pool/pool.cw differ diff --git a/externals/grill/py/pd/attr-1.pd b/externals/grill/py/pd/attr-1.pd new file mode 100644 index 00000000..3a870839 --- /dev/null +++ b/externals/grill/py/pd/attr-1.pd @@ -0,0 +1,32 @@ +#N canvas 114 127 683 413 12; +#X obj 224 370 pyext simple ex3; +#X obj 365 370 print A; +#X msg 252 180 get tmp; +#X msg 369 210 get _inlets; +#X msg 253 204 set tmp 3; +#X msg 368 234 set _inlets 4; +#X msg 18 179 dir; +#X msg 15 282 getattributes; +#X msg 15 309 getmethods; +#X msg 18 207 dir+; +#X text 15 48 This demonstrates the usage of attributes. See the simple.py +file.; +#X text 252 161 access a class variable; +#X text 368 191 try to get/set internal stuff; +#X text 479 234 (NOT allowed!); +#X text 16 15 py/pyext - Python script objects \, (C)2003 Thomas Grill +; +#X text 16 261 get attributes and methods; +#X text 51 178 Python module dict; +#X text 59 208 Python class dict; +#X text 17 101 All attribute-related methods dump eventual output to +the attribute outlet (which is the right-most one); +#X connect 0 1 1 0; +#X connect 2 0 0 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 5 0 0 0; +#X connect 6 0 0 0; +#X connect 7 0 0 0; +#X connect 8 0 0 0; +#X connect 9 0 0 0; diff --git a/externals/grill/py/py.dsp b/externals/grill/py/py.dsp deleted file mode 100644 index d6613064..00000000 --- a/externals/grill/py/py.dsp +++ /dev/null @@ -1,229 +0,0 @@ -# Microsoft Developer Studio Project File - Name="py" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** NICHT BEARBEITEN ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=py - Win32 Threads Debug -!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE -!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl -!MESSAGE -!MESSAGE NMAKE /f "py.mak". -!MESSAGE -!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben -!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: -!MESSAGE -!MESSAGE NMAKE /f "py.mak" CFG="py - Win32 Threads Debug" -!MESSAGE -!MESSAGE Für die Konfiguration stehen zur Auswahl: -!MESSAGE -!MESSAGE "py - Win32 Release" (basierend auf "Win32 (x86) Dynamic-Link Library") -!MESSAGE "py - Win32 Debug" (basierend auf "Win32 (x86) Dynamic-Link Library") -!MESSAGE "py - Win32 Threads Release" (basierend auf "Win32 (x86) Dynamic-Link Library") -!MESSAGE "py - Win32 Threads Debug" (basierend auf "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "py" -# PROP Scc_LocalPath "." -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "py - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "pd-msvc\r" -# PROP Intermediate_Dir "pd-msvc\r" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "PY_EXPORTS" /YX /FD /c -# ADD CPP /nologo /W3 /O2 /I "c:\programme\audio\pd\src" /I "f:\prog\max\flext\source" /I "C:\Programme\prog\Python22\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D FLEXT_SYS=2 /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0xc07 /d "NDEBUG" -# ADD RSC /l 0xc07 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 -# ADD LINK32 kernel32.lib user32.lib pd.lib flext-pdwin.lib /nologo /dll /machine:I386 /libpath:"c:/programme/audio/pd/bin" /libpath:"..\flext\pd-msvc" /libpath:"C:\Programme\prog\Python22\libs" - -!ELSEIF "$(CFG)" == "py - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "pd-msvc\d" -# PROP Intermediate_Dir "pd-msvc\d" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "PY_EXPORTS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GR /ZI /Od /I "c:\programme\audio\pd\src" /I "f:\prog\max\flext\source" /I "C:\Programme\prog\Python22\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D FLEXT_SYS=2 /FR /YX /FD /GZ /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0xc07 /d "_DEBUG" -# ADD RSC /l 0xc07 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib pd.lib flext_d-pdwin.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /libpath:"c:/programme/audio/pd/bin" /libpath:"..\flext\pd-msvc" /libpath:"f:\prog\packs\Python-2.2.1\PCbuild" - -!ELSEIF "$(CFG)" == "py - Win32 Threads Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "py___Win32_Threads_Release" -# PROP BASE Intermediate_Dir "py___Win32_Threads_Release" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "pd-msvc\tr" -# PROP Intermediate_Dir "pd-msvc\tr" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GR /GX /O2 /I "c:\programme\audio\pd\src" /I "f:\prog\max\flext" /I "C:\Programme\prog\Python22\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "PD" /D "NT" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GR /O2 /I "c:\programme\audio\pd\src" /I "f:\prog\max\flext\source" /I "C:\Programme\prog\Python22\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D FLEXT_SYS=2 /D "FLEXT_THREADS" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0xc07 /d "NDEBUG" -# ADD RSC /l 0xc07 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib pd.lib flext-pdwin.lib /nologo /dll /machine:I386 /libpath:"c:/programme/audio/pd/bin" /libpath:"..\flext\msvc" /libpath:"C:\Programme\prog\Python22\libs" -# ADD LINK32 kernel32.lib user32.lib pd.lib flext_t-pdwin.lib pthreadVC.lib /nologo /dll /machine:I386 /out:"pd-msvc\py.dll" /libpath:"c:/programme/audio/pd/bin" /libpath:"..\flext\pd-msvc" /libpath:"C:\Programme\prog\Python22\libs" - -!ELSEIF "$(CFG)" == "py - Win32 Threads Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "py___Win32_Threads_Debug" -# PROP BASE Intermediate_Dir "py___Win32_Threads_Debug" -# PROP BASE Ignore_Export_Lib 0 -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "pd-msvc\td" -# PROP Intermediate_Dir "pd-msvc\td" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GR /GX /ZI /Od /I "c:\programme\audio\pd\src" /I "f:\prog\max\flext" /I "C:\Programme\prog\Python22\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "PD" /D "NT" /FR /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Gm /GR /GX /ZI /Od /I "c:\programme\audio\pd\src" /I "f:\prog\max\flext\source" /I "C:\Programme\prog\Python22\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D FLEXT_SYS=2 /D "FLEXT_THREADS" /FR /YX /FD /GZ /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0xc07 /d "_DEBUG" -# ADD RSC /l 0xc07 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib pd.lib flext-pdwin.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /libpath:"c:/programme/audio/pd/bin" /libpath:"..\flext\msvc-debug" /libpath:"f:\prog\packs\Python-2.2.1\PCbuild" -# ADD LINK32 kernel32.lib user32.lib pd.lib flext_td-pdwin.lib pthreadVC.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /libpath:"c:/programme/audio/pd/bin" /libpath:"..\flext\pd-msvc" /libpath:"f:\prog\packs\Python-2.2.1\PCbuild" - -!ENDIF - -# Begin Target - -# Name "py - Win32 Release" -# Name "py - Win32 Debug" -# Name "py - Win32 Threads Release" -# Name "py - Win32 Threads Debug" -# Begin Group "scripts" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\scripts\script.py -# End Source File -# Begin Source File - -SOURCE=.\scripts\sendrecv.py -# End Source File -# Begin Source File - -SOURCE=.\scripts\simple.py -# End Source File -# Begin Source File - -SOURCE=.\scripts\tcltk.py -# End Source File -# Begin Source File - -SOURCE=.\scripts\threads.py -# End Source File -# End Group -# Begin Group "doc" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\gpl.txt -# End Source File -# Begin Source File - -SOURCE=.\license.txt -# End Source File -# Begin Source File - -SOURCE=.\readme.txt -# End Source File -# End Group -# Begin Source File - -SOURCE=.\source\bound.cpp -# End Source File -# Begin Source File - -SOURCE=.\source\clmeth.cpp -# End Source File -# Begin Source File - -SOURCE=.\source\main.cpp -# End Source File -# Begin Source File - -SOURCE=.\source\main.h -# End Source File -# Begin Source File - -SOURCE=.\source\modmeth.cpp -# End Source File -# Begin Source File - -SOURCE=.\source\py.cpp -# End Source File -# Begin Source File - -SOURCE=.\source\pyargs.cpp -# End Source File -# Begin Source File - -SOURCE=.\source\pyext.cpp -# End Source File -# Begin Source File - -SOURCE=.\source\pyext.h -# End Source File -# Begin Source File - -SOURCE=.\source\register.cpp -# End Source File -# End Target -# End Project diff --git a/externals/grill/py/source/bound.cpp b/externals/grill/py/source/bound.cpp index c0e8c35a..debbf5dd 100644 --- a/externals/grill/py/source/bound.cpp +++ b/externals/grill/py/source/bound.cpp @@ -123,6 +123,9 @@ PyObject *pyext::pyext_unbind(PyObject *,PyObject *args) V pyext::ClearBinding() { + // in case the object couldn't be constructed... + if(!pyobj) return; + void *data = NULL; const t_symbol *sym = NULL; diff --git a/externals/grill/xsample/config-pd-linux.txt b/externals/grill/xsample/config-pd-linux.txt index e89b6e98..be08468b 100755 --- a/externals/grill/xsample/config-pd-linux.txt +++ b/externals/grill/xsample/config-pd-linux.txt @@ -4,6 +4,7 @@ # your c++ compiler (if not g++) #CXX=g++ +CXX=g++-3.2 # where does the PD installation reside? PD=/usr/local/lib/pd diff --git a/externals/grill/xsample/maxmsp/xgroove~.help b/externals/grill/xsample/maxmsp/xgroove~.help index 6b25dcda..a1cb7bbc 100644 Binary files a/externals/grill/xsample/maxmsp/xgroove~.help and b/externals/grill/xsample/maxmsp/xgroove~.help differ diff --git a/externals/grill/xsample/xsample.cw b/externals/grill/xsample/xsample.cw index f18d3a83..b205fd6b 100755 Binary files a/externals/grill/xsample/xsample.cw and b/externals/grill/xsample/xsample.cw differ -- cgit v1.2.1