[PD-cvs] pd/src kernel.c,1.1.2.83,1.1.2.84

Mathieu Bouchard matju at users.sourceforge.net
Sun Aug 12 22:57:05 CEST 2007


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

Modified Files:
      Tag: desiredata
	kernel.c 
Log Message:
added canvas_base_o_index() to get a backup of next_o_index at time of last pd_pushsym()


Index: kernel.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/Attic/kernel.c,v
retrieving revision 1.1.2.83
retrieving revision 1.1.2.84
diff -C2 -d -r1.1.2.83 -r1.1.2.84
*** kernel.c	12 Aug 2007 03:19:13 -0000	1.1.2.83
--- kernel.c	12 Aug 2007 20:57:03 -0000	1.1.2.84
***************
*** 343,346 ****
--- 343,347 ----
      t_symbol *loading_abstr;
      t_gstack *next;
+     long base_o_index;
  };
  
***************
*** 356,359 ****
--- 357,364 ----
  }
  
+ long canvas_base_o_index(void) {
+     return gstack_head ? gstack_head->base_o_index : 0;
+ }
+ 
  void pd_pushsym(t_pd *x) {
      t_gstack *y = (t_gstack *)malloc(sizeof(*y));
***************
*** 361,364 ****
--- 366,370 ----
      y->next = gstack_head;
      y->loading_abstr = pd_loading_abstr;
+     y->base_o_index = x->_class == canvas_class ? ((t_canvas *)x)->next_o_index : -666;
      pd_loading_abstr = 0;
      gstack_head = y;
***************
*** 2076,2080 ****
      t_binbuf *newb = binbuf_new();
      t_atom *vec = oldb->v;
!     t_int n = oldb->n, nextindex, stackdepth = 0, stack[MAXSTACK], nobj = 0, i;
      t_atom outmess[MAXSTACK], *nextmess;
      if (!maxtopd) binbuf_addv(newb,"tt;","max","v2");
--- 2082,2086 ----
      t_binbuf *newb = binbuf_new();
      t_atom *vec = oldb->v;
!     t_int n = oldb->n, nextindex, stackdepth = 0, stack[MAXSTACK], nobj = 0;
      t_atom outmess[MAXSTACK], *nextmess;
      if (!maxtopd) binbuf_addv(newb,"tt;","max","v2");
***************
*** 2095,2099 ****
          if (maxtopd) { /* case 1: importing a ".pat" file into Pd. */
              /* dollar signs in file translate to symbols */
!             for (i = 0; i < natom; i++) {
                  if (nextmess[i].a_type == A_DOLLAR) {
                      SETSYMBOL(nextmess+i, symprintf("$%ld",nextmess[i].a_index));
--- 2101,2105 ----
          if (maxtopd) { /* case 1: importing a ".pat" file into Pd. */
              /* dollar signs in file translate to symbols */
!             for (int i=0; i<natom; i++) {
                  if (nextmess[i].a_type == A_DOLLAR) {
                      SETSYMBOL(nextmess+i, symprintf("$%ld",nextmess[i].a_index));
***************
*** 2131,2135 ****
                      t_symbol *classname = atom_getsymbolarg(6, natom, nextmess);
                      if (classname == gensym("trigger") || classname == gensym("t")) {
!                         for (i = 7; i < natom; i++)
                              if (nextmess[i].a_type == A_SYMBOL && nextmess[i].a_symbol == gensym("i"))
                                      nextmess[i].a_symbol = gensym("f");
--- 2137,2141 ----
                      t_symbol *classname = atom_getsymbolarg(6, natom, nextmess);
                      if (classname == gensym("trigger") || classname == gensym("t")) {
!                         for (int i=7; i<natom; i++)
                              if (nextmess[i].a_type == A_SYMBOL && nextmess[i].a_symbol == gensym("i"))
                                      nextmess[i].a_symbol = gensym("f");
***************
*** 2141,2145 ****
                      outmess[3] = nextmess[3];
                      SETSYMBOL(outmess+4, classname);
!                     for (i = 7; i < natom; i++) outmess[i-2] = nextmess[i];
                      SETSEMI(outmess + natom - 2);
                      binbuf_add(newb, natom - 1, outmess);
--- 2147,2151 ----
                      outmess[3] = nextmess[3];
                      SETSYMBOL(outmess+4, classname);
!                     for (int i=7; i<natom; i++) outmess[i-2] = nextmess[i];
                      SETSEMI(outmess + natom - 2);
                      binbuf_add(newb, natom - 1, outmess);
***************
*** 2150,2154 ****
                      outmess[2] = nextmess[2];
                      outmess[3] = nextmess[3];
!                     for (i = 6; i < natom; i++) outmess[i-2] = nextmess[i];
                      SETSEMI(outmess + natom - 2);
                      binbuf_add(newb, natom - 1, outmess);
--- 2156,2160 ----
                      outmess[2] = nextmess[2];
                      outmess[3] = nextmess[3];
!                     for (int i=6; i<natom; i++) outmess[i-2] = nextmess[i];
                      SETSEMI(outmess + natom - 2);
                      binbuf_add(newb, natom - 1, outmess);
***************
*** 2250,2257 ****
              t_atom *a1 = &inbuf->v[indexin + nmatched], *a2 = &searchbuf->v[nmatched];
              if (a1->a_type != a2->a_type ||
!                 a1->a_type == A_SYMBOL  && a1->a_symbol    != a2->a_symbol    ||
!                 a1->a_type == A_FLOAT   && a1->a_float     != a2->a_float     ||
!                 a1->a_type == A_DOLLAR  && a1->a_index != a2->a_index ||
!                 a1->a_type == A_DOLLSYM && a1->a_symbol    != a2->a_symbol) goto nomatch;
          }
          return 1;
--- 2256,2263 ----
              t_atom *a1 = &inbuf->v[indexin + nmatched], *a2 = &searchbuf->v[nmatched];
              if (a1->a_type != a2->a_type ||
!                 a1->a_type == A_SYMBOL  && a1->a_symbol != a2->a_symbol ||
!                 a1->a_type == A_FLOAT   && a1->a_float  != a2->a_float  ||
!                 a1->a_type == A_DOLLAR  && a1->a_index  != a2->a_index  ||
!                 a1->a_type == A_DOLLSYM && a1->a_symbol != a2->a_symbol) goto nomatch;
          }
          return 1;
***************
*** 2265,2269 ****
      t_binbuf *b = binbuf_new();
      int import = !strcmp(name->name + strlen(name->name) - 4, ".pat");
!         /* set filename so that new canvases can pick them up */
      int dspstate = canvas_suspend_dsp();
      glob_setfilename(0, name, dir);
--- 2271,2275 ----
      t_binbuf *b = binbuf_new();
      int import = !strcmp(name->name + strlen(name->name) - 4, ".pat");
!     /* set filename so that new canvases can pick them up */
      int dspstate = canvas_suspend_dsp();
      glob_setfilename(0, name, dir);





More information about the Pd-cvs mailing list