[PD-cvs] pd/src builtins.c,1.1.2.37,1.1.2.38

Mathieu Bouchard matju at users.sourceforge.net
Fri Jul 20 06:04:28 CEST 2007


Update of /cvsroot/pure-data/pd/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11836

Modified Files:
      Tag: desiredata
	builtins.c 
Log Message:
[unpost] is now reentrant


Index: builtins.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/Attic/builtins.c,v
retrieving revision 1.1.2.37
retrieving revision 1.1.2.38
diff -C2 -d -r1.1.2.37 -r1.1.2.38
*** builtins.c	19 Jul 2007 17:48:25 -0000	1.1.2.37
--- builtins.c	20 Jul 2007 04:04:26 -0000	1.1.2.38
***************
*** 2876,2884 ****
          }
      }
!     t_atom *p = x->vec + (x->n - 1);
      union word *w = h->vec + (x->n - 1);
      for (int i = x->n; i--; p--, w--) {
          switch (p->a_type) {
!         case A_FLOAT:  outlet_float( x->out(i),w->w_float); break;
          case A_SYMBOL: outlet_symbol(x->out(i),w->w_symbol); break;
          case A_POINTER:
--- 2876,2884 ----
          }
      }
!     t_atom *p     = x->vec + (x->n - 1);
      union word *w = h->vec + (x->n - 1);
      for (int i = x->n; i--; p--, w--) {
          switch (p->a_type) {
!         case A_FLOAT:  outlet_float( x->out(i),w->w_float ); break;
          case A_SYMBOL: outlet_symbol(x->out(i),w->w_symbol); break;
          case A_POINTER:
***************
*** 2952,2962 ****
  /* new desiredata classes are below this point. */
  
- /* warning: [unpost] is not reentrant yet. */
  static t_class *unpost_class;
  struct t_unpost : t_object {
  	t_outlet *o0,*o1;
  	char buf[MAXPDSTRING];
  };
! static t_unpost *current_unpost;
  
  void *unpost_new (t_symbol *s) {
--- 2952,2965 ----
  /* new desiredata classes are below this point. */
  
  static t_class *unpost_class;
  struct t_unpost : t_object {
  	t_outlet *o0,*o1;
+ };
+ struct t_unpost_frame {
+ 	t_unpost *self;
+ 	//ostringstream os;
  	char buf[MAXPDSTRING];
  };
! static t_unpost_frame *current_unpost;
  
  void *unpost_new (t_symbol *s) {
***************
*** 2976,2980 ****
          p = strchr(b,'\n');
          if (!p) break;
!         outlet_symbol(current_unpost->o1,gensym2(b,p-b));
  	b=p+1;
      }
--- 2979,2983 ----
          p = strchr(b,'\n');
          if (!p) break;
!         outlet_symbol(current_unpost->self->o1,gensym2(b,p-b));
  	b=p+1;
      }
***************
*** 2987,2994 ****
  void unpost_anything (t_unpost *x, t_symbol *s, int argc, t_atom *argv) {
      t_printhook backup1 = sys_printhook;
!     t_unpost *backup2 = current_unpost;
      sys_printhook = unpost_printhook;
!     current_unpost = x;
!     x->buf[0] = 0;
      outlet_anything(x->o0,s,argc,argv);
      sys_printhook = backup1;
--- 2990,2998 ----
  void unpost_anything (t_unpost *x, t_symbol *s, int argc, t_atom *argv) {
      t_printhook backup1 = sys_printhook;
!     t_unpost_frame *backup2 = current_unpost;
      sys_printhook = unpost_printhook;
!     current_unpost = new t_unpost_frame;
!     current_unpost->self = x;
!     current_unpost->buf[0] = 0;
      outlet_anything(x->o0,s,argc,argv);
      sys_printhook = backup1;





More information about the Pd-cvs mailing list