[PD-cvs] pd/src builtins.c, 1.1.2.18, 1.1.2.19 builtins_dsp.c, 1.1.2.19, 1.1.2.20

Mathieu Bouchard matju at users.sourceforge.net
Thu Jun 28 18:36:31 CEST 2007


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

Modified Files:
      Tag: desiredata
	builtins.c builtins_dsp.c 
Log Message:
cleanup


Index: builtins_dsp.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/Attic/builtins_dsp.c,v
retrieving revision 1.1.2.19
retrieving revision 1.1.2.20
diff -C2 -d -r1.1.2.19 -r1.1.2.20
*** builtins_dsp.c	9 Jan 2007 22:30:24 -0000	1.1.2.19
--- builtins_dsp.c	28 Jun 2007 16:36:29 -0000	1.1.2.20
***************
*** 19,23 ****
  #include <string.h>
  #include <stdlib.h>
! extern "C" int ugen_getsortno(void);
  #define DEFDELVS 64             /* LATER get this from canvas at DSP time */
  #ifdef HAVE_LIBFFTW3F
--- 19,23 ----
  #include <string.h>
  #include <stdlib.h>
! extern int ugen_getsortno ();
  #define DEFDELVS 64             /* LATER get this from canvas at DSP time */
  #ifdef HAVE_LIBFFTW3F
***************
*** 195,199 ****
      while (n--) {
          float g = *in2++;
!         *out++ = (g ? *in1++ / g : 0); 
      }
      return w+5;
--- 195,199 ----
      while (n--) {
          float g = *in2++;
!         *out++ = (g ? *in1++ / g : 0);
      }
      return w+5;
***************
*** 227,231 ****
      int n = (int)w[4];
      if(f) f = 1./f;
!     while (n--) *out++ = *in++ * f; 
      return w+5;
  }
--- 227,231 ----
      int n = (int)w[4];
      if(f) f = 1./f;
!     while (n--) *out++ = *in++ * f;
      return w+5;
  }
***************
*** 296,304 ****
          if (nxfer > n) nxfer = n;
          phase += nxfer;
! 		
! 		if (SIMD_CHKCNT(nxfer))
! 			testcopyvec_simd(fp, in, nxfer);
! 		else
! 			testcopyvec(fp, in, nxfer);
          if (phase >= endphase) {
              tabwrite_tilde_redraw(x);
--- 296,301 ----
          if (nxfer > n) nxfer = n;
          phase += nxfer;
! 	if (SIMD_CHKCNT(nxfer)) testcopyvec_simd(fp, in, nxfer);
! 	else                    testcopyvec(fp, in, nxfer);
          if (phase >= endphase) {
              tabwrite_tilde_redraw(x);
***************
*** 1456,1460 ****
      int n = (int)w[3];
      int count;
!     float *sump; 
      in += n;
      for (count = x->phase, sump = x->sumbuf;
--- 1453,1457 ----
      int n = (int)w[3];
      int count;
!     float *sump;
      in += n;
      for (count = x->phase, sump = x->sumbuf;
***************
*** 1682,1697 ****
      for (i = x->n, ip = x->vec, sp2 = sp; i--; ip++, sp2++) {
          int ch = *ip - 1;
!         if ((*sp2)->n != sys_dacblocksize)
!             error("dac~: bad vector size");
!     	else 
! 	    if (ch >= 0 && ch < sys_get_outchannels())
! 		if(SIMD_CHECK3(sys_dacblocksize,sys_soundout + sys_dacblocksize*ch,
! 			       (*sp2)->v,sys_soundout + sys_dacblocksize*ch))
  		    dsp_add(plus_perf_simd, 4, sys_soundout + sys_dacblocksize*ch,
  			    (*sp2)->v, sys_soundout + sys_dacblocksize*ch, sys_dacblocksize);
  		else
!             dsp_add(plus_perform, 4, sys_soundout + sys_dacblocksize*ch,
!                 (*sp2)->v, sys_soundout + sys_dacblocksize*ch, sys_dacblocksize);
!     }    
  }
  static void dac_free(t_dac *x) {free(x->vec);}
--- 1679,1691 ----
      for (i = x->n, ip = x->vec, sp2 = sp; i--; ip++, sp2++) {
          int ch = *ip - 1;
!         if ((*sp2)->n != sys_dacblocksize) error("dac~: bad vector size");
!     	else if (ch >= 0 && ch < sys_get_outchannels())
! 		if(SIMD_CHECK3(sys_dacblocksize,sys_soundout + sys_dacblocksize*ch, (*sp2)->v,sys_soundout + sys_dacblocksize*ch))
  		    dsp_add(plus_perf_simd, 4, sys_soundout + sys_dacblocksize*ch,
  			    (*sp2)->v, sys_soundout + sys_dacblocksize*ch, sys_dacblocksize);
  		else
! 		    dsp_add(plus_perform, 4, sys_soundout + sys_dacblocksize*ch, (*sp2)->v, sys_soundout + sys_dacblocksize*ch,
! 			sys_dacblocksize);
!     }
  }
  static void dac_free(t_dac *x) {free(x->vec);}
***************
*** 1728,1732 ****
      t_float *out = (t_float *)w[2];
      int n = (int)w[3];
!     while (n--) *out++ = *in1++; 
      return w+4;
  }
--- 1722,1726 ----
      t_float *out = (t_float *)w[2];
      int n = (int)w[3];
!     while (n--) *out++ = *in1++;
      return w+4;
  }
***************
*** 1845,1849 ****
          }
      }
!     c->c_phase = phase; 
      return w+4;
  }
--- 1839,1843 ----
          }
      }
!     c->c_phase = phase;
      return w+4;
  }
***************
*** 1870,1874 ****
  		}
  	else testcopyvec_8(bp, in, n);
!     c->c_phase = phase; 
      return w+4;
  }
--- 1864,1868 ----
  		}
  	else testcopyvec_8(bp, in, n);
!     c->c_phase = phase;
      return w+4;
  }
***************
*** 2124,2128 ****
      float *in2 = (t_float *)w[2];
      int n = w[3];
!     for (;n--; in1++, in2++) {	
          float f = *in1;
  	*in1 = *in2;
--- 2118,2122 ----
      float *in2 = (t_float *)w[2];
      int n = w[3];
!     for (;n--; in1++, in2++) {
          float f = *in1;
  	*in1 = *in2;
***************
*** 2348,2352 ****
  static void sigrfftw_free(t_sigrfftw *x) {fftwf_destroy_plan(x->plan);}
  
! /* for compatibility reasons with the mayer fft, we'll have to invert 
   * some samples ... this is ugly, but someone might rely on that ... */
  static void sigrfftw_invert(t_sample * s, t_int n) {
--- 2342,2346 ----
  static void sigrfftw_free(t_sigrfftw *x) {fftwf_destroy_plan(x->plan);}
  
! /* for compatibility reasons with the mayer fft, we'll have to invert
   * some samples ... this is ugly, but someone might rely on that ... */
  static void sigrfftw_invert(t_sample * s, t_int n) {
***************
*** 2406,2410 ****
  }
  static t_int *sigrifftw_perform(t_int *w) {
!     sigrfftw_invert((t_sample *)w[2],w[3]); 
      fftwf_execute(*(fftwf_plan*)w[1]);
      return w+4;
--- 2400,2404 ----
  }
  static t_int *sigrifftw_perform(t_int *w) {
!     sigrfftw_invert((t_sample *)w[2],w[3]);
      fftwf_execute(*(fftwf_plan*)w[1]);
      return w+4;
***************
*** 2422,2426 ****
  	x->dim.is=1;
  	x->dim.os=1;
! 	x->plan = fftwf_plan_guru_split_dft_c2r(1, &(x->dim), 0, NULL, 
  		in1, in2, out, FFTW_ESTIMATE | FFTW_PRESERVE_INPUT);
  	dsp_add_zero(in1+ n/2, n/2);
--- 2416,2420 ----
  	x->dim.is=1;
  	x->dim.os=1;
! 	x->plan = fftwf_plan_guru_split_dft_c2r(1, &(x->dim), 0, NULL,
  		in1, in2, out, FFTW_ESTIMATE | FFTW_PRESERVE_INPUT);
  	dsp_add_zero(in1+ n/2, n/2);
***************
*** 2552,2556 ****
          }
          if (PD_BIGORSMALL(last))
!             last = 0; 
          c->c_x = last;
      } else {
--- 2546,2550 ----
          }
          if (PD_BIGORSMALL(last))
!             last = 0;
          c->c_x = last;
      } else {
***************
*** 2605,2612 ****
      x->hz = f;
      x->ctl->c_coef = f * (2 * 3.14159) / x->sr;
!     if (x->ctl->c_coef > 1)
!         x->ctl->c_coef = 1;
!     else if (x->ctl->c_coef < 0)
!         x->ctl->c_coef = 0;
  }
  static void siglop_clear(t_siglop *x, t_floatarg q) {
--- 2599,2604 ----
      x->hz = f;
      x->ctl->c_coef = f * (2 * 3.14159) / x->sr;
!     if (x->ctl->c_coef > 1) x->ctl->c_coef = 1;
!     if (x->ctl->c_coef < 0) x->ctl->c_coef = 0;
  }
  static void siglop_clear(t_siglop *x, t_floatarg q) {
***************
*** 2628,2635 ****
  static void siglop_dsp(t_siglop *x, t_signal **sp) {
      x->sr = sp[0]->sr;
!     siglop_ft1(x,  x->hz);
!     dsp_add(siglop_perform, 4,
!         sp[0]->v, sp[1]->v, 
!             x->ctl, sp[0]->n);
  
  }
--- 2620,2625 ----
  static void siglop_dsp(t_siglop *x, t_signal **sp) {
      x->sr = sp[0]->sr;
!     siglop_ft1(x, x->hz);
!     dsp_add(siglop_perform, 4, sp[0]->v, sp[1]->v, x->ctl, sp[0]->n);
  
  }
***************
*** 2693,2698 ****
      x->ctl->c_coef2 = - r * r;
      x->ctl->c_gain = 2 * oneminusr * (oneminusr + r * omega);
!     /* post("r %f, omega %f, coef1 %f, coef2 %f",
!         r, omega, x->ctl->c_coef1, x->ctl->c_coef2); */
  }
  static void sigbp_ft1(t_sigbp *x, t_floatarg f) {sigbp_docoef(x, f, x->q);}
--- 2683,2687 ----
      x->ctl->c_coef2 = - r * r;
      x->ctl->c_gain = 2 * oneminusr * (oneminusr + r * omega);
!     /* post("r %f, omega %f, coef1 %f, coef2 %f", r, omega, x->ctl->c_coef1, x->ctl->c_coef2); */
  }
  static void sigbp_ft1(t_sigbp *x, t_floatarg f) {sigbp_docoef(x, f, x->q);}
***************
*** 2776,2780 ****
      for (int i = 0; i < n; i++) {
          float output =  *in++ + fb1 * last + fb2 * prev;
!         if (PD_BIGORSMALL(output)) output = 0; 
          *out++ = ff1 * output + ff2 * last + ff3 * prev;
          prev = last;
--- 2765,2769 ----
      for (int i = 0; i < n; i++) {
          float output =  *in++ + fb1 * last + fb2 * prev;
!         if (PD_BIGORSMALL(output)) output = 0;
          *out++ = ff1 * output + ff2 * last + ff3 * prev;
          prev = last;
***************
*** 3084,3098 ****
  }
  static void sigcpole_dsp(t_sigcpole *x, t_signal **sp) {
!     dsp_add(sigcpole_perform, 8,
!         sp[0]->v, sp[1]->v, sp[2]->v, sp[3]->v, 
!         sp[4]->v, sp[5]->v, x, sp[0]->n);
! }
! static void sigcpole_clear(t_sigcpole *x) {
!     x->lastre = x->lastim = 0;
! }
! static void sigcpole_set(t_sigcpole *x, t_float re, t_float im) {
!     x->lastre = re;
!     x->lastim = im;
  }
  void sigcpole_setup() {
      sigcpole_class = class_new2("cpole~",sigcpole_new,0,sizeof(t_sigcpole),0,"FF");
--- 3073,3080 ----
  }
  static void sigcpole_dsp(t_sigcpole *x, t_signal **sp) {
!     dsp_add(sigcpole_perform, 8, sp[0]->v, sp[1]->v, sp[2]->v, sp[3]->v, sp[4]->v, sp[5]->v, x, sp[0]->n);
  }
+ static void sigcpole_clear(t_sigcpole *x) {x->lastre = x->lastim = 0;}
+ static void sigcpole_set(t_sigcpole *x, t_float re, t_float im) {x->lastre = re; x->lastim = im;}
  void sigcpole_setup() {
      sigcpole_class = class_new2("cpole~",sigcpole_new,0,sizeof(t_sigcpole),0,"FF");
***************
*** 3142,3156 ****
  }
  static void sigczero_dsp(t_sigczero *x, t_signal **sp) {
!     dsp_add(sigczero_perform, 8,
!         sp[0]->v, sp[1]->v, sp[2]->v, sp[3]->v, 
!         sp[4]->v, sp[5]->v, x, sp[0]->n);
! }
! static void sigczero_clear(t_sigczero *x) {
!     x->lastre = x->lastim = 0;
! }
! static void sigczero_set(t_sigczero *x, t_float re, t_float im) {
!     x->lastre = re;
!     x->lastim = im;
  }
  void sigczero_setup() {
      sigczero_class = class_new2("czero~",sigczero_new,0,sizeof(t_sigczero),0,"FF");
--- 3124,3131 ----
  }
  static void sigczero_dsp(t_sigczero *x, t_signal **sp) {
!     dsp_add(sigczero_perform, 8, sp[0]->v, sp[1]->v, sp[2]->v, sp[3]->v, sp[4]->v, sp[5]->v, x, sp[0]->n);
  }
+ static void sigczero_clear(t_sigczero *x) {x->lastre = x->lastim = 0;}
+ static void sigczero_set(t_sigczero *x, t_float re, t_float im) {x->lastre = re; x->lastim = im;}
  void sigczero_setup() {
      sigczero_class = class_new2("czero~",sigczero_new,0,sizeof(t_sigczero),0,"FF");
***************
*** 3288,3292 ****
          while (n--) *out++ = *in++;
      } else {
!         while (n--) *out++ = 0; 
      }
      return w+4;
--- 3263,3267 ----
          while (n--) *out++ = *in++;
      } else {
!         while (n--) *out++ = 0;
      }
      return w+4;
***************
*** 3362,3366 ****
      t_float *out = (t_float *)w[2];
      int n = (int)w[3];
!     while (n--) *out++ = *in, *in++ = 0; 
      return w+4;
  }
--- 3337,3341 ----
      t_float *out = (t_float *)w[2];
      int n = (int)w[3];
!     while (n--) *out++ = *in, *in++ = 0;
      return w+4;
  }
***************
*** 3495,3499 ****
          long l = (i ? (i == DUMTAB1SIZE-1 ? DUMTAB1SIZE-2 : i) : 1)<< 23;
          *(int *)(&f) = l;
!         rsqrt_exptab[i] = 1./sqrt(f);   
      }
      for (int i = 0; i < DUMTAB2SIZE; i++) {
--- 3470,3474 ----
          long l = (i ? (i == DUMTAB1SIZE-1 ? DUMTAB1SIZE-2 : i) : 1)<< 23;
          *(int *)(&f) = l;
!         rsqrt_exptab[i] = 1./sqrt(f);
      }
      for (int i = 0; i < DUMTAB2SIZE; i++) {
***************
*** 3521,3527 ****
  float qrsqrt(float f) {return q8_rsqrt(f);}
  #endif
! struct t_sigrsqrt : t_object {
!     float a;
! };
  static t_class *sigrsqrt_class;
  static void *sigrsqrt_new() {
--- 3496,3500 ----
  float qrsqrt(float f) {return q8_rsqrt(f);}
  #endif
! struct t_sigrsqrt : t_object {float a;};
  static t_class *sigrsqrt_class;
  static void *sigrsqrt_new() {
***************
*** 3561,3567 ****
  
  /* sigsqrt -  square root good to 8 mantissa bits  */
! struct t_sigsqrt : t_object {
!     float a;
! };
  static t_class *sigsqrt_class;
  static void *sigsqrt_new() {
--- 3534,3538 ----
  
  /* sigsqrt -  square root good to 8 mantissa bits  */
! struct t_sigsqrt : t_object {float a;};
  static t_class *sigsqrt_class;
  static void *sigsqrt_new() {
***************
*** 3581,3585 ****
          else {
              float g = rsqrt_exptab[(l >> 23) & 0xff] *
!                 rsqrt_mantissatab[(l >> 13) & 0x3ff];
              *out++ = f * (1.5 * g - 0.5 * g * g * g * f);
          }
--- 3552,3556 ----
          else {
              float g = rsqrt_exptab[(l >> 23) & 0xff] *
!                  rsqrt_mantissatab[(l >> 13) & 0x3ff];
              *out++ = f * (1.5 * g - 0.5 * g * g * g * f);
          }
***************
*** 3600,3606 ****
  
  /* ------------------------------ wrap~ -------------------------- */
! struct t_sigwrap : t_object {
!     float a;
! };
  t_class *sigwrap_class;
  static void *sigwrap_new() {
--- 3571,3575 ----
  
  /* ------------------------------ wrap~ -------------------------- */
! struct t_sigwrap : t_object {float a;};
  t_class *sigwrap_class;
  static void *sigwrap_new() {
***************
*** 3752,3756 ****
      double phase;
      float conv;
!     float a;      /* scalar frequency */
  };
  static void *phasor_new(t_floatarg f) {
--- 3721,3725 ----
      double phase;
      float conv;
!     float a; /* scalar frequency */
  };
  static void *phasor_new(t_floatarg f) {
***************
*** 3823,3827 ****
      normhipart = tf.tf_i[HIOFFSET];
  
! #if 0           /* this is the readable version of the code. */
      while (n--) {
          dphase = (double)(*in++ * (float)(COSTABSIZE)) + UNITBIT32;
--- 3792,3796 ----
      normhipart = tf.tf_i[HIOFFSET];
  
! #if 0 /* this is the readable version of the code. */
      while (n--) {
          dphase = (double)(*in++ * (float)(COSTABSIZE)) + UNITBIT32;
***************
*** 3834,3839 ****
          *out++ = f1 + frac * (f2 - f1);
      }
! #endif
! #if 1           /* this is the same, unwrapped by hand. */
      dphase = (double)(*in++ * (float)(COSTABSIZE)) + UNITBIT32;
      tf.tf_d = dphase;
--- 3803,3807 ----
          *out++ = f1 + frac * (f2 - f1);
      }
! #else /* this is the same, unwrapped by hand. */
      dphase = (double)(*in++ * (float)(COSTABSIZE)) + UNITBIT32;
      tf.tf_d = dphase;
***************
*** 3920,3925 ****
          *out++ = f1 + frac * (f2 - f1);
      }
! #endif
! #if 1
      tf.tf_d = dphase;
      dphase += *in++ * conv;
--- 3888,3892 ----
          *out++ = f1 + frac * (f2 - f1);
      }
! #else
      tf.tf_d = dphase;
      dphase += *in++ * conv;

Index: builtins.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/Attic/builtins.c,v
retrieving revision 1.1.2.18
retrieving revision 1.1.2.19
diff -C2 -d -r1.1.2.18 -r1.1.2.19
*** builtins.c	28 Jun 2007 07:10:42 -0000	1.1.2.18
--- builtins.c	28 Jun 2007 16:36:29 -0000	1.1.2.19
***************
*** 1842,1848 ****
  
  static t_class *spigot_class;
! struct t_spigot : t_object {
!     float state;
! };
  static void *spigot_new(t_floatarg f) {
      t_spigot *x = (t_spigot *)pd_new(spigot_class);
--- 1842,1846 ----
  
  static t_class *spigot_class;
! struct t_spigot : t_object {float state;};
  static void *spigot_new(t_floatarg f) {
      t_spigot *x = (t_spigot *)pd_new(spigot_class);
***************
*** 1875,1881 ****
  
  static t_class *moses_class;
! struct t_moses : t_object {
!     float y;
! };
  static void *moses_new(t_floatarg f) {
      t_moses *x = (t_moses *)pd_new(moses_class);
--- 1873,1877 ----
  
  static t_class *moses_class;
! struct t_moses : t_object {float y;};
  static void *moses_new(t_floatarg f) {
      t_moses *x = (t_moses *)pd_new(moses_class);
***************
*** 1922,1928 ****
  
  static t_class *makefilename_class;
! struct t_makefilename : t_object {
!     t_symbol *format;
! };
  static void *makefilename_new(t_symbol *s) {
      t_makefilename *x = (t_makefilename *)pd_new(makefilename_class);
--- 1918,1922 ----
  
  static t_class *makefilename_class;
! struct t_makefilename : t_object {t_symbol *format;};
  static void *makefilename_new(t_symbol *s) {
      t_makefilename *x = (t_makefilename *)pd_new(makefilename_class);
***************
*** 1999,2005 ****
  
  static t_class *change_class;
! struct t_change : t_object {
!     t_float f;
! };
  static void *change_new(t_floatarg f) {
      t_change *x = (t_change *)pd_new(change_class);
--- 1993,1997 ----
  
  static t_class *change_class;
! struct t_change : t_object {t_float f;};
  static void *change_new(t_floatarg f) {
      t_change *x = (t_change *)pd_new(change_class);
***************
*** 2232,2238 ****
  }
  
! struct t_midi2 : t_object {
!     t_float ch;
! };
  static void *midi2_new(t_class *cl, t_floatarg ch) {
      t_midi2 *x = (t_midi2 *)pd_new(cl);
--- 2224,2228 ----
  }
  
! struct t_midi2 : t_object {t_float ch;};
  static void *midi2_new(t_class *cl, t_floatarg ch) {
      t_midi2 *x = (t_midi2 *)pd_new(cl);
***************
*** 2967,2975 ****
  static t_class *pipe_class;
  struct t_hang2 {
!     t_clock *h_clock;
!     t_hang2 *h_next;
!     struct t_pipe *h_owner;
!     t_gpointer *h_gp;
!     union word h_vec[1];        /* not the actual number. */
  };
  struct t_pipeout {
--- 2957,2965 ----
  static t_class *pipe_class;
  struct t_hang2 {
!     t_clock *clock;
!     t_hang2 *next;
!     struct t_pipe *owner;
!     t_gpointer *gp;
!     union word vec[1];        /* not the actual number. */
  };
  struct t_pipeout {
***************
*** 3046,3070 ****
  }
  static void hang_free(t_hang2 *h) {
!     t_pipe *x = h->h_owner;
!     t_gpointer *gp = h->h_gp;
      for (int i = x->nptr; i--; gp++) gpointer_unset(gp);
!     free(h->h_gp);
!     clock_free(h->h_clock);
      free(h);
  }
  static void hang_tick(t_hang2 *h) {
!     t_pipe *x = h->h_owner;
      t_hang2 *h2, *h3;
!     t_pipeout *p;
!     int i;
!     union word *w;
!     if (x->hang == h) x->hang = h->h_next;
!     else for (h2 = x->hang; (h3 = h2->h_next); h2 = h3) {
          if (h3 == h) {
!             h2->h_next = h3->h_next;
              break;
          }
      }
!     for (i = x->n, p = x->vec + (x->n - 1), w = h->h_vec + (x->n - 1); i--; p--, w--) {
          switch (p->a.a_type) {
          case A_FLOAT:  outlet_float( x->out(i),w->w_float); break;
--- 3036,3059 ----
  }
  static void hang_free(t_hang2 *h) {
!     t_pipe *x = h->owner;
!     t_gpointer *gp = h->gp;
      for (int i = x->nptr; i--; gp++) gpointer_unset(gp);
!     free(h->gp);
!     clock_free(h->clock);
      free(h);
  }
  static void hang_tick(t_hang2 *h) {
!     t_pipe *x = h->owner;
      t_hang2 *h2, *h3;
!     if (x->hang == h) x->hang = h->next;
!     else for (h2 = x->hang; (h3 = h2->next); h2 = h3) {
          if (h3 == h) {
!             h2->next = h3->next;
              break;
          }
      }
!     t_pipeout *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.a_type) {
          case A_FLOAT:  outlet_float( x->out(i),w->w_float); break;
***************
*** 3080,3084 ****
  }
  static void pipe_list(t_pipe *x, t_symbol *s, int ac, t_atom *av) {
!     t_hang2 *h = (t_hang2 *)getbytes(sizeof(*h) + (x->n - 1) * sizeof(*h->h_vec));
      t_gpointer *gp, *gp2;
      t_pipeout *p;
--- 3069,3073 ----
  }
  static void pipe_list(t_pipe *x, t_symbol *s, int ac, t_atom *av) {
!     t_hang2 *h = (t_hang2 *)getbytes(sizeof(*h) + (x->n - 1) * sizeof(*h->vec));
      t_gpointer *gp, *gp2;
      t_pipeout *p;
***************
*** 3086,3090 ****
      t_atom *ap;
      t_word *w;
!     h->h_gp = (t_gpointer *)getbytes(x->nptr * sizeof(t_gpointer));
      if (ac > n) ac = n;
      for (i = 0, gp = x->gp, p = x->vec, ap = av; i < ac; i++, p++, ap++) {
--- 3075,3079 ----
      t_atom *ap;
      t_word *w;
!     h->gp = (t_gpointer *)getbytes(x->nptr * sizeof(t_gpointer));
      if (ac > n) ac = n;
      for (i = 0, gp = x->gp, p = x->vec, ap = av; i < ac; i++, p++, ap++) {
***************
*** 3103,3107 ****
          }
      }
!     for (i = 0, gp = x->gp, gp2 = h->h_gp, p = x->vec, w = h->h_vec; i < n; i++, p++, w++) {
          if (p->a.a_type == A_POINTER) {
              if (gp->o) gp->o->refcount++;
--- 3092,3096 ----
          }
      }
!     for (i = 0, gp = x->gp, gp2 = h->gp, p = x->vec, w = h->vec; i < n; i++, p++, w++) {
          if (p->a.a_type == A_POINTER) {
              if (gp->o) gp->o->refcount++;
***************
*** 3110,3118 ****
          } else *w = p->a.a_w;
      }
!     h->h_next = x->hang;
      x->hang = h;
!     h->h_owner = x;
!     h->h_clock = clock_new(h, (t_method)hang_tick);
!     clock_delay(h->h_clock, (x->deltime >= 0 ? x->deltime : 0));
  }
  static void pipe_flush(t_pipe *x) {
--- 3099,3107 ----
          } else *w = p->a.a_w;
      }
!     h->next = x->hang;
      x->hang = h;
!     h->owner = x;
!     h->clock = clock_new(h, (t_method)hang_tick);
!     clock_delay(h->clock, (x->deltime >= 0 ? x->deltime : 0));
  }
  static void pipe_flush(t_pipe *x) {
***************
*** 3122,3126 ****
      t_hang2 *hang;
      while ((hang = x->hang)) {
!         x->hang = hang->h_next;
          hang_free(hang);
      }
--- 3111,3115 ----
      t_hang2 *hang;
      while ((hang = x->hang)) {
!         x->hang = hang->next;
          hang_free(hang);
      }





More information about the Pd-cvs mailing list