[PD-cvs] pd/src desire.c,1.1.2.217.2.207,1.1.2.217.2.208

Mathieu Bouchard matju at users.sourceforge.net
Mon Aug 13 21:52:44 CEST 2007


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

Modified Files:
      Tag: desiredata
	desire.c 
Log Message:
cleanup; prevent crash when using some commands on zombies


Index: desire.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/Attic/desire.c,v
retrieving revision 1.1.2.217.2.207
retrieving revision 1.1.2.217.2.208
diff -C2 -d -r1.1.2.217.2.207 -r1.1.2.217.2.208
*** desire.c	13 Aug 2007 01:58:33 -0000	1.1.2.217.2.207
--- desire.c	13 Aug 2007 19:52:40 -0000	1.1.2.217.2.208
***************
*** 495,499 ****
      x->ylabel = (t_symbol **)getbytes(0);
      // only manage this canvas if it's not one of the 3 invisible builtin canvases
!     /* if (hack) gobj_subscribe(x,manager); */
      return x;
  }
--- 495,499 ----
      x->ylabel = (t_symbol **)getbytes(0);
      // only manage this canvas if it's not one of the 3 invisible builtin canvases
!     // if (hack) gobj_subscribe(x,manager);
      return x;
  }
***************
*** 529,536 ****
      if (yloc < CANVAS_DEFCANVASYLOC) yloc = CANVAS_DEFCANVASYLOC;
      if (xloc < 0) xloc = 0;
!     x->x1 = 0;
!     x->y1 = 0;
!     x->x2 = 1;
!     x->y2 = 1;
      canvas_setbounds(x, xloc, yloc, xloc + width, yloc + height);
      x->owner = owner;
--- 529,534 ----
      if (yloc < CANVAS_DEFCANVASYLOC) yloc = CANVAS_DEFCANVASYLOC;
      if (xloc < 0) xloc = 0;
!     x->x1 = 0; x->y1 = 0;
!     x->x2 = 1; x->y2 = 1;
      canvas_setbounds(x, xloc, yloc, xloc + width, yloc + height);
      x->owner = owner;
***************
*** 616,621 ****
  }
  
- static void graph_vis(t_gobj *gr, int vis);
- 
  static void canvas_redraw(t_canvas *x) {
  	gobj_changed(x,0);
--- 614,617 ----
***************
*** 702,706 ****
      canvas_wires_each(oc,t,x)
          if ((t.from == text && t.outletp == outp) ||
!             (t.to == text && t.inletp == inp))
  		obj_disconnect(t.from, t.outlet, t.to, t.inlet);
  }
--- 698,702 ----
      canvas_wires_each(oc,t,x)
          if ((t.from == text && t.outletp == outp) ||
!             (t.to   == text &&  t.inletp ==  inp))
  		obj_disconnect(t.from, t.outlet, t.to, t.inlet);
  }
***************
*** 714,726 ****
  static void canvas_resortinlets(t_canvas *x);
  static void canvas_resortoutlets(t_canvas *x);
- 
  static void canvas_push(t_canvas *x, t_floatarg f) {pd_pushsym(x);}
- 
  /* assuming that this only ever gets called on toplevel canvases (?) */
  static void canvas_pop(t_canvas *x, t_floatarg fvis) {
!     pd_popsym(x);
!     x->loading = 0;
!     canvas_resortinlets(x);
!     canvas_resortoutlets(x);
      if (fvis) canvas_vis(x, 1);
  }
--- 710,717 ----
  static void canvas_resortinlets(t_canvas *x);
  static void canvas_resortoutlets(t_canvas *x);
  static void canvas_push(t_canvas *x, t_floatarg f) {pd_pushsym(x);}
  /* assuming that this only ever gets called on toplevel canvases (?) */
  static void canvas_pop(t_canvas *x, t_floatarg fvis) {
!     pd_popsym(x); x->loading = 0; canvas_resortinlets(x); canvas_resortoutlets(x);
      if (fvis) canvas_vis(x, 1);
  }
***************
*** 728,735 ****
  extern "C" void canvas_popabstraction(t_canvas *x) {
      pd_set_newest(x);
!     pd_popsym(x);
!     x->loading = 0;
!     canvas_resortinlets(x);
!     canvas_resortoutlets(x);
  }
  
--- 719,723 ----
  extern "C" void canvas_popabstraction(t_canvas *x) {
      pd_set_newest(x);
!     pd_popsym(x); x->loading = 0; canvas_resortinlets(x); canvas_resortoutlets(x);
  }
  
***************
*** 913,921 ****
      else sys_gui("pdtk_pd_dsp 1\n");
      ugen_start();
!     //timeval v0,v1;
!     //gettimeofday(&v0,0);
      canvases_each(x) canvas_dodsp(x,1,0);
!     //gettimeofday(&v1,0);
!     //printf("canvas_start_dsp took %ld us\n",(v1.tv_sec-v0.tv_sec)*1000000+(v1.tv_usec-v0.tv_usec));
      canvas_dspstate = 1;
  }
--- 901,907 ----
      else sys_gui("pdtk_pd_dsp 1\n");
      ugen_start();
!     //timeval v0,v1; gettimeofday(&v0,0);
      canvases_each(x) canvas_dodsp(x,1,0);
!     //gettimeofday(&v1,0); printf("canvas_start_dsp took %ld us\n",(v1.tv_sec-v0.tv_sec)*1000000+(v1.tv_usec-v0.tv_usec));
      canvas_dspstate = 1;
  }
***************
*** 929,936 ****
  }
  
! /* DSP can be suspended before, and resumed after, operations which
!    might affect the DSP chain.  For example, we suspend before loading and
!    resume afterward, so that DSP doesn't get resorted for every DSP object
!    int the patch. */
  int canvas_suspend_dsp () {
      int rval = canvas_dspstate;
--- 915,920 ----
  }
  
! /* DSP can be suspended before, and resumed after, operations which might affect the DSP chain.
!    For example, we suspend before loading and resume afterwards, so that DSP doesn't get resorted for every DSP object in the patch. */
  int canvas_suspend_dsp () {
      int rval = canvas_dspstate;
***************
*** 938,950 ****
      return rval;
  }
! 
! void canvas_resume_dsp(int oldstate) {
!     if (oldstate) canvas_start_dsp();
! }
! 
  /* this is equivalent to suspending and resuming in one step. */
! void canvas_update_dsp () {
!     if (canvas_dspstate) canvas_start_dsp();
! }
  
  extern "C" void glob_dsp(void *self, t_symbol *s, int argc, t_atom *argv) {
--- 922,928 ----
      return rval;
  }
! void canvas_resume_dsp(int oldstate) {if (oldstate) canvas_start_dsp();}
  /* this is equivalent to suspending and resuming in one step. */
! void canvas_update_dsp () {if (canvas_dspstate) canvas_start_dsp();}
  
  extern "C" void glob_dsp(void *self, t_symbol *s, int argc, t_atom *argv) {
***************
*** 961,966 ****
  }
  
! extern "C"
! void *canvas_getblock(t_class *blockclass, t_canvas **canvasp) {
      t_canvas *canvas = *canvasp;
      void *ret = 0;
--- 939,943 ----
  }
  
! extern "C" void *canvas_getblock(t_class *blockclass, t_canvas **canvasp) {
      t_canvas *canvas = *canvasp;
      void *ret = 0;
***************
*** 5598,5603 ****
  	t_text *o;
  	if (sscanf(s->name,"x%lx",(long*)&o)<1) {error("expected object-id"); return 0;}
! 	if (!object_table->exists(o) || !(long)object_table->get(o)&1) {
! 		error("%s target is not a currently valid pointer",s->name);
  		return 0;
  	}
--- 5575,5581 ----
  	t_text *o;
  	if (sscanf(s->name,"x%lx",(long*)&o)<1) {error("expected object-id"); return 0;}
! 	if (!object_table->exists(o)) {error("%s target is not a currently valid pointer",s->name); return 0;}
! 	if ((object_table->get(o)&1)==0) {
! 		error("%s target is zombie? object_table says '%ld'",s->name,object_table->get(o));
  		return 0;
  	}
***************
*** 5623,5626 ****
--- 5601,5605 ----
  static void canvas_object_delete(t_canvas *x, t_symbol *name) {
  	t_text *o = symbol2opointer(name); if (!o) return;
+ 	fprintf(stderr,"canvas_object_delete %p\n",o);
  	canvas_delete(x,o);
  	gobj_changed(x,"children");
***************
*** 6411,6414 ****
--- 6390,6395 ----
  	if(max>0.0 && min<=0.0) min = 0.01*max;
  	if(max<=0.0 && min>0.0) max = 0.01*min;
+     } else {
+ 	if(min>max) swap(min,max);
      }
      SET(min,min);





More information about the Pd-cvs mailing list