[PD-cvs] externals/grill/flext/source flclass.h,1.47,1.48 flout.cpp,1.18,1.19 flqueue.cpp,1.21,1.22 flstdc.h,1.27,1.28 flsupport.h,1.72,1.73

Thomas Grill xovo at users.sourceforge.net
Fri Dec 17 06:01:21 CET 2004


Update of /cvsroot/pure-data/externals/grill/flext/source
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8452/source

Modified Files:
	flclass.h flout.cpp flqueue.cpp flstdc.h flsupport.h 
Log Message:
global system lock functions
fixed a thread sensitive spot
fix for _long_ attribute dialogs
build system for flext-based externals
typo fixed in attribute editor
atom outlet functions


Index: flqueue.cpp
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/flext/source/flqueue.cpp,v
retrieving revision 1.21
retrieving revision 1.22
diff -C2 -d -r1.21 -r1.22
*** flqueue.cpp	9 Nov 2004 03:31:34 -0000	1.21
--- flqueue.cpp	17 Dec 2004 05:01:18 -0000	1.22
***************
*** 33,37 ****
  {
  public:
!     void Set(flext_base *t,int o,const t_symbol *s,int ac,const t_atom *av) { th = t,out = o,sym = s,argc = ac,argv = av; }
  
      // \note PD sys lock must already be held by caller
--- 33,41 ----
  {
  public:
!     void Set(flext_base *t,int o,const t_symbol *s,int ac,const t_atom *av) 
!     { 
!         th = t; out = o;
!         sym = s,argc = ac,argv = av; 
!     }
  
      // \note PD sys lock must already be held by caller
***************
*** 99,106 ****
          t_atom *at = GetAtoms(1); 
          SetInt(*at,dt);
  #if FLEXT_SYS == FLEXT_SYS_PD
!         const t_symbol *sym = sym_float;
  #elif FLEXT_SYS == FLEXT_SYS_MAX
!         const t_symbol *sym = sym_int;
  #else
  #error Not implemented!
--- 103,111 ----
          t_atom *at = GetAtoms(1); 
          SetInt(*at,dt);
+         const t_symbol *sym;
  #if FLEXT_SYS == FLEXT_SYS_PD
!         sym = sym_float;
  #elif FLEXT_SYS == FLEXT_SYS_MAX
!         sym = sym_int;
  #else
  #error Not implemented!
***************
*** 116,119 ****
--- 121,148 ----
      }
  
+     void Push(flext_base *th,int o,const t_atom &a) 
+     { 
+         t_atom *at = GetAtoms(1); 
+         *at = a;
+         const t_symbol *sym;
+         if(IsSymbol(a))
+             sym = sym_symbol;
+         else if(IsFloat(a))
+             sym = sym_float;
+ #if FLEXT_SYS == FLEXT_SYS_MAX
+         else if(IsInt(a))
+             sym = sym_int;
+ #endif
+ #if FLEXT_SYS == FLEXT_SYS_PD
+         else if(IsPointer(a))
+             sym = sym_pointer;
+ #endif
+         else {
+             error("atom type not supported");
+             return;
+         }
+         Set(th,o,sym,1,at); 
+     }
+ 
      void Push(flext_base *th,int o,int argc,const t_atom *argv) 
      {
***************
*** 313,316 ****
--- 342,351 ----
  }
  
+ void flext_base::ToQueueAtom(int o,const t_atom &at) const
+ {
+     queue.Push(const_cast<flext_base *>(this),o,at);
+     Trigger();
+ }
+ 
  void flext_base::ToQueueList(int o,int argc,const t_atom *argv) const
  {

Index: flstdc.h
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/flext/source/flstdc.h,v
retrieving revision 1.27
retrieving revision 1.28
diff -C2 -d -r1.27 -r1.28
*** flstdc.h	16 Dec 2004 05:01:07 -0000	1.27
--- flstdc.h	17 Dec 2004 05:01:18 -0000	1.28
***************
*** 119,122 ****
--- 119,123 ----
  #include "ext.h"
  #include "ext_user.h"
+ #include "ext_critical.h"
  #include "z_dsp.h"
  

Index: flout.cpp
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/flext/source/flout.cpp,v
retrieving revision 1.18
retrieving revision 1.19
diff -C2 -d -r1.18 -r1.19
*** flout.cpp	16 Dec 2004 05:01:07 -0000	1.18
--- flout.cpp	17 Dec 2004 05:01:18 -0000	1.19
***************
*** 26,29 ****
--- 26,52 ----
  void flext_base::ToSysAnything(int n,const t_symbol *s,int argc,const t_atom *argv) const { outlet *o = GetOut(n); if(o) { CRITON(); outlet_anything((t_outlet *)o,const_cast<t_symbol *>(s),argc,(t_atom *)argv); CRITOFF(); } }
  
+ void flext_base::ToSysAtom(int n,const t_atom &at) const 
+ { 
+     outlet *o = GetOut(n); 
+     if(o) { 
+         CRITON(); 
+         if(IsSymbol(at))
+             outlet_symbol((t_outlet *)o,const_cast<t_symbol *>(GetSymbol(at))); 
+         else if(IsFloat(at))
+             outlet_float((t_outlet *)o,GetFloat(at)); 
+ #if FLEXT_SYS == FLEXT_SYS_MAX
+         else if(IsInt(at))
+             outlet_flint((t_outlet *)o,GetInt(at));
+ #endif
+ #if FLEXT_SYS == FLEXT_SYS_PD
+         else if(IsPointer(at))
+             outlet_pointer((t_outlet *)o,GetPointer(at)); 
+ #endif
+         else
+             error("Atom type not supported");
+         CRITOFF(); 
+     } 
+ }
+ 
  #elif FLEXT_SYS == FLEXT_SYS_JMAX
  
***************
*** 53,56 ****
--- 76,80 ----
  void flext_base::ToOutInt(int n,int f) const { if(CHKTHR()) ToSysInt(n,f); else ToQueueInt(n,f); }
  void flext_base::ToOutSymbol(int n,const t_symbol *s) const { if(CHKTHR()) ToSysSymbol(n,s); else ToQueueSymbol(n,s); }
+ void flext_base::ToOutAtom(int n,const t_atom &at) const { if(CHKTHR()) ToSysAtom(n,at); else ToQueueAtom(n,at); }
  void flext_base::ToOutList(int n,int argc,const t_atom *argv) const { if(CHKTHR()) ToSysList(n,argc,argv); else ToQueueList(n,argc,argv); }
  void flext_base::ToOutAnything(int n,const t_symbol *s,int argc,const t_atom *argv) const { if(CHKTHR()) ToSysAnything(n,s,argc,argv); else ToQueueAnything(n,s,argc,argv); }

Index: flsupport.h
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/flext/source/flsupport.h,v
retrieving revision 1.72
retrieving revision 1.73
diff -C2 -d -r1.72 -r1.73
*** flsupport.h	28 Nov 2004 05:01:00 -0000	1.72
--- flsupport.h	17 Dec 2004 05:01:18 -0000	1.73
***************
*** 438,446 ****
  	static bool CanbePointer(const t_atom &a) { return IsPointer(a); }
  	//! Access the pointer value (without type check)
! 	static void *GetPointer(const t_atom &a) { return a.a_w.w_gpointer; }
  	//! Check for a pointer and get its value 
! 	static void *GetAPointer(const t_atom &a,void *def = NULL) { return IsPointer(a)?GetPointer(a):def; }
  	//! Set the atom to represent a pointer
! 	static void SetPointer(t_atom &a,void *p) { a.a_type = A_POINTER; a.a_w.w_gpointer = (t_gpointer *)p; }
  
  #elif FLEXT_SYS == FLEXT_SYS_MAX
--- 438,446 ----
  	static bool CanbePointer(const t_atom &a) { return IsPointer(a); }
  	//! Access the pointer value (without type check)
! 	static t_gpointer *GetPointer(const t_atom &a) { return a.a_w.w_gpointer; }
  	//! Check for a pointer and get its value 
! 	static t_gpointer *GetAPointer(const t_atom &a,t_gpointer *def = NULL) { return IsPointer(a)?GetPointer(a):def; }
  	//! Set the atom to represent a pointer
! 	static void SetPointer(t_atom &a,t_gpointer *p) { a.a_type = A_POINTER; a.a_w.w_gpointer = (t_gpointer *)p; }
  
  #elif FLEXT_SYS == FLEXT_SYS_MAX
***************
*** 646,649 ****
--- 646,672 ----
  // --- thread stuff -----------------------------------------------
  
+ 	/*!	\defgroup FLEXT_S_LOCK Global system locking
+ 		@{ 
+ 	*/
+ 
+ #if FLEXT_SYS == FLEXT_SYS_PD
+     #if PD_MINOR_VERSION >= 38 || (PD_MINOR_VERSION >= 37 && defined(PD_DEVEL_VERSION))
+         static void Lock() { sys_lock(); }
+         static void Unlock() { sys_unlock(); }
+     #else
+         // no system locking for old PD versions
+         static void Lock() {}
+         static void Unlock() {}
+     #endif
+ #elif FLEXT_SYS == FLEXT_SYS_MAX
+     // Max 4.2 upwards!
+     static void Lock() { critical_enter(0); }
+     static void Unlock() { critical_exit(0); }
+ #else
+ #error
+ #endif
+ 
+ //!		@} FLEXT_S_LOCK
+ 
  #ifdef FLEXT_THREADS
  	/*!	\defgroup FLEXT_S_THREAD Flext thread handling 

Index: flclass.h
===================================================================
RCS file: /cvsroot/pure-data/externals/grill/flext/source/flclass.h,v
retrieving revision 1.47
retrieving revision 1.48
diff -C2 -d -r1.47 -r1.48
*** flclass.h	15 Nov 2004 03:30:59 -0000	1.47
--- flclass.h	17 Dec 2004 05:01:17 -0000	1.48
***************
*** 232,235 ****
--- 232,238 ----
  	void ToOutString(int n,const char *s) const { ToOutSymbol(n,MakeSymbol(s)); }
  
+ 	//! Output atom (index n starts with 0)
+ 	void ToOutAtom(int n,const t_atom &at) const; 
+ 
  	//! Output list (index n starts with 0)
  	void ToOutList(int n,int argc,const t_atom *argv) const;
***************
*** 265,268 ****
--- 268,274 ----
  	void ToQueueString(int n,const char *s) const { ToQueueSymbol(n,MakeSymbol(s)); }
  
+ 	//! Output atom (index n starts with 0)
+ 	void ToQueueAtom(int n,const t_atom &at) const; 
+ 
  	//! Output list (index n starts with 0)
  	void ToQueueList(int n,int argc,const t_atom *argv) const; 
***************
*** 293,296 ****
--- 299,305 ----
  	void ToSelfString(int n,const char *s) const { ToSelfSymbol(n,MakeSymbol(s)); }
  
+ 	//! Output atom (index n starts with 0)
+     void ToSelfAtom(int n,const t_atom &at) const { ToQueueAtom(-1-n,at); }
+ 
  	//! Send list to self (inlet n)
      void ToSelfList(int n,int argc,const t_atom *argv) const { ToQueueList(-1-n,argc,argv); }
***************
*** 737,740 ****
--- 746,750 ----
  	void ToSysBool(int n,bool f) const { ToSysInt(n,f?1:0); }
  	void ToSysSymbol(int n,const t_symbol *s) const; 
+ 	void ToSysAtom(int n,const t_atom &at) const;
  	void ToSysList(int n,int argc,const t_atom *argv) const;
  	void ToSysAnything(int n,const t_symbol *s,int argc,const t_atom *argv)  const; 





More information about the Pd-cvs mailing list