diff options
Diffstat (limited to 'externals/grill')
-rw-r--r-- | externals/grill/flext/buildsys/win/bmake-bcc-flext.inc | 6 | ||||
-rw-r--r-- | externals/grill/flext/changes.txt | 1 | ||||
-rw-r--r-- | externals/grill/flext/source/flbase.cpp | 33 | ||||
-rw-r--r-- | externals/grill/flext/source/flbase.h | 5 |
4 files changed, 38 insertions, 7 deletions
diff --git a/externals/grill/flext/buildsys/win/bmake-bcc-flext.inc b/externals/grill/flext/buildsys/win/bmake-bcc-flext.inc index 8dfb224e..0d82065e 100644 --- a/externals/grill/flext/buildsys/win/bmake-bcc-flext.inc +++ b/externals/grill/flext/buildsys/win/bmake-bcc-flext.inc @@ -55,9 +55,9 @@ FLEXTLIBINST=$(FLEXTLIB) !endif _install_: - @if not exist $@ mkdir $(FLEXTINC) > nul - @if not exist $@ mkdir $(FLEXTLIB) > nul - @if not exist $@ mkdir $(FLEXTLIBINST) > nul + @if not exist $(FLEXTINC) mkdir $(FLEXTINC) > nul + @if not exist $(FLEXTLIB) mkdir $(FLEXTLIB) > nul + @if not exist $(FLEXTLIBINST) mkdir $(FLEXTLIBINST) > nul copy $(TARGET) $(FLEXTLIBINST) > nul !ifdef SHARED diff --git a/externals/grill/flext/changes.txt b/externals/grill/flext/changes.txt index 8c2cbb15..16e2c793 100644 --- a/externals/grill/flext/changes.txt +++ b/externals/grill/flext/changes.txt @@ -11,6 +11,7 @@ Version history: 0.5.1: - optimizations for message handling and memory footprint - enhanced build system for cygwin +- added GetCanvasDir to retrieve folder in which the patcher resides 0.5.0: - fixes for 64 bit builds (size_t is integer type of pointer size) diff --git a/externals/grill/flext/source/flbase.cpp b/externals/grill/flext/source/flbase.cpp index 2fd3fc97..63017d47 100644 --- a/externals/grill/flext/source/flbase.cpp +++ b/externals/grill/flext/source/flbase.cpp @@ -149,16 +149,43 @@ void canvas_getargs(int *argcp, t_atom **argvp); #endif -void flext_obj::CanvasArgs(AtomList &args) const +void flext_obj::GetCanvasArgs(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]; + args(argc,argv); #else #pragma message("Not implemented") args(0); #endif } + + +#if FLEXT_SYS == FLEXT_SYS_MAX +static short patcher_myvol(t_patcher *x) +{ + t_box *w; + if(x->p_vol) + return x->p_vol; + else if((w = (t_box *)x->p_vnewobj) != NULL) + return patcher_myvol(w->b_patcher); + else + return 0; +} +#endif + +void flext_obj::GetCanvasDir(char *buf,size_t bufsz) const +{ +#if FLEXT_SYS == FLEXT_SYS_PD + const char *c = GetString(canvas_getdir(thisCanvas())); + strncpy(buf,c,bufsz); +#elif FLEXT_SYS == FLEXT_SYS_MAX + short path = patcher_myvol(thisCanvas()); + // \TODO dangerous!! no check for path length (got to be long enough... like 1024 chars) + path_topathname(path,NULL,buf); +#else +#error Not implemented +#endif +} diff --git a/externals/grill/flext/source/flbase.h b/externals/grill/flext/source/flbase.h index d20f1866..664dc15b 100644 --- a/externals/grill/flext/source/flbase.h +++ b/externals/grill/flext/source/flbase.h @@ -257,7 +257,10 @@ class FLEXT_SHARE FLEXT_CLASSDEF(flext_obj): static bool GetParamSym(t_atom &dst,const t_symbol *s,t_canvas *c); //! Get the canvas arguments - void CanvasArgs(AtomList &args) const; + void GetCanvasArgs(AtomList &args) const; + + //! Get the canvas/patcher directory + void GetCanvasDir(char *buf,size_t bufsz) const; //! @} FLEXT_OBJ_INTERNAL }; |