[PD-cvs] pd/src desire.c, 1.1.2.139, 1.1.2.140 desire.h, 1.1.2.14, 1.1.2.15

Mathieu Bouchard matju at users.sourceforge.net
Sun Sep 3 05:47:16 CEST 2006


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

Modified Files:
      Tag: devel_0_39
	desire.c desire.h 
Log Message:
.


Index: desire.h
===================================================================
RCS file: /cvsroot/pure-data/pd/src/Attic/desire.h,v
retrieving revision 1.1.2.14
retrieving revision 1.1.2.15
diff -C2 -d -r1.1.2.14 -r1.1.2.15
*** desire.h	2 Sep 2006 19:10:30 -0000	1.1.2.14
--- desire.h	3 Sep 2006 03:47:14 -0000	1.1.2.15
***************
*** 1,53 ****
  /*
!   This file is part of PureData (impd branch)
!   Copyright (c) 1997-1999 Miller Puckette.
    Copyright 2000-2001 IEM KUG Graz Austria (Thomas Musil)
!   Copyright 2004,2005 by Mathieu Bouchard
    For information on usage and redistribution, and for a DISCLAIMER OF ALL
    WARRANTIES, see the file, "LICENSE.txt", in this distribution.
- */
- 
- #ifndef __DESIRE_H
- #define __DESIRE_H
- 
- #include "m_pd.h"
- 
- /* Copyright (c) 1997-1999 Miller Puckette.
- * For information on usage and redistribution, and for a DISCLAIMER OF ALL
- * WARRANTIES, see the file, "LICENSE.txt," in this distribution.  */
- 
- /* this file defines the structure for "glists" and related structures and
- functions.  "Glists" and "canvases" and "graphs" used to be different
- structures until being unified in version 0.35.
- 
- A glist occupies its own window if the "gl_havewindow" flag is set.  Its
- appearance on its "parent" or "owner" (if it has one) is as a graph if
- "gl_isgraph" is set, and otherwise as a text box.
  
! A glist is "root" if it has no owner, i.e., a document window.  In this
! case "gl_havewindow" is always set.
  
! We maintain a list of root windows, so that we can traverse the whole
! collection of everything in a Pd process.
  
! If a glist has a window it may still not be "mapped."  Miniaturized
! windows aren't mapped, for example, but a window is also not mapped
! immediately upon creation.  In either case gl_havewindow is true but
! gl_mapped is false.
  
! Closing a non-root window makes it invisible; closing a root destroys it.
  
! A glist that's just a text object on its parent is always "toplevel."  An
! embedded glist can switch back and forth to appear as a toplevel by double-
! clicking on it.  Single-clicking a text box makes the toplevel become visible
! and raises the window it's in.
  
! If a glist shows up as a graph on its parent, the graph is blanked while the
! glist has its own window, even if miniaturized.
  
  */
  
! /* NOTE: this file describes Pd implementation details which may change
! in future releases.  The public (stable) API is in m_pd.h. */  
  
  #if defined(_LANGUAGE_C_PLUS_PLUS) || defined(__cplusplus)
--- 1,45 ----
  /*
!   This file is part of PureData
!   Copyright 2004-2006 by Mathieu Bouchard
    Copyright 2000-2001 IEM KUG Graz Austria (Thomas Musil)
!   Copyright (c) 1997-1999 Miller Puckette.
    For information on usage and redistribution, and for a DISCLAIMER OF ALL
    WARRANTIES, see the file, "LICENSE.txt", in this distribution.
  
!   this file declares the C interface for the second half of DesireData.
!   this is where most of the differences between DesireData and PureData lie.
  
!   SYNONYMS:
!     1. glist = graph = canvas = patcher; those were not always synonymous.
!        however, graph sometimes means a canvas that is displaying an array.
!     2. outconnect = connection = patchcord = wire
  
!   canvases have a few flags that determine their appearance:
!     gl_havewindow: should open its own window (only if mapped? or...)
!     gl_isgraph:    the GOP flag: show as graph-on-parent, vs TextBox.
!     gl_owner==0:   it's a root canvas, should be in canvas_list.
!                    In this case "gl_havewindow" is always set.
  
!   canvas_list is a list of root windows only, which can be traversed using glists_each.
  
!   If a glist has a window it may still not be "mapped."  Miniaturized
!   windows aren't mapped, for example, but a window is also not mapped
!   immediately upon creation.  In either case gl_havewindow is true but
!   gl_mapped is false.
  
!   Closing a non-root window makes it invisible; closing a root destroys it.
!   A glist that's just a text object on its parent is always "toplevel."  An
!   embedded glist can switch back and forth to appear as a toplevel by double-
!   clicking on it.  Single-clicking a text box makes the toplevel become visible
!   and raises the window it's in.
  
+   If a glist shows up as a graph on its parent, the graph is blanked while the
+   glist has its own window, even if miniaturized.
  */
  
! #ifndef __DESIRE_H
! #define __DESIRE_H
! 
! #include "m_pd.h"
  
  #if defined(_LANGUAGE_C_PLUS_PLUS) || defined(__cplusplus)
***************
*** 55,70 ****
  #endif
  
  #ifdef GARRAY_THREAD_LOCK 
  #include <pthread.h> /* TB: for t_garray */
  #endif
  
- /* ----------------------- data ------------------------------- */
- 
- typedef struct _updateheader {
-     struct _updateheader *upd_next;
-     unsigned int upd_array:1;       /* true if array, false if glist */
-     unsigned int upd_queued:1;      /* true if we're queued */
- } t_updateheader;
- 
  EXTERN_STRUCT _rtext;
  #define t_rtext struct _rtext
--- 47,55 ----
  #endif
  
+ /* i don't know whether this is currently used at all in DesireData. -- matju 2006.09 */
  #ifdef GARRAY_THREAD_LOCK 
  #include <pthread.h> /* TB: for t_garray */
  #endif
  
  EXTERN_STRUCT _rtext;
  #define t_rtext struct _rtext
***************
*** 88,111 ****
  /* commented-out fields are not in DesireData */
  typedef struct _editor {
-     t_updateheader e_upd;           /* update header structure */
-     t_selection *e_updlist;         /* list of objects to update */
      t_rtext *e_rtext;               /* text responder linked list */
- /*  t_selection *e_selection;          head of the selection list */
      t_rtext *e_textedfor;           /* the rtext if any that we are editing */
      t_gobj *e_grab;                 /* object being "dragged" */
- /*  t_glistmotionfn e_motionfn;        ... motion callback */
- /*  t_glistkeyfn e_keyfn;              ... keypress callback */
      t_binbuf *e_connectbuf;         /* connections to deleted objects */
      t_binbuf *e_deleted;            /* last stuff we deleted */
      t_guiconnect *e_guiconnect;     /* GUI connection for filtering messages */
      struct _glist *e_glist;         /* glist which owns this */
-     int e_xwas;                     /* xpos on last mousedown or motion event */
-     int e_ywas;                     /* ypos, similarly */
-     int e_selectline_index1;        /* indices for the selected line if any */
-     int e_selectline_outno;         /* (only valid if e_selectedline is set) */
-     int e_selectline_index2;
-     int e_selectline_inno;
-     t_outconnect *e_selectline_tag;
- /*  unsigned int e_onmotion: 3;        action to take on motion */
      unsigned int e_lastmoved: 1;    /* one if mouse has moved since click */
      unsigned int e_textdirty: 1;    /* one if e_textedfor has changed */
--- 73,83 ----
***************
*** 113,127 ****
  } t_editor;
  
- /* editor structure for "garrays".  We don't bother to delete and regenerate
- this structure when the "garray" becomes invisible or visible, although we
- could do so if the structure gets big (like the "editor" above.) */
-     
- typedef struct _arrayvis {
-     t_updateheader av_upd;          /* update header structure */
-     t_garray *av_garray;            /* owning structure */    
- } t_arrayvis;
- 
  /* the t_tick structure describes where to draw x and y "ticks" for a glist */
- 
  typedef struct _tick {  /* where to put ticks on x or y axes */
      float k_point;      /* one point to draw a big tick at */
--- 85,89 ----
***************
*** 130,138 ****
  } t_tick;
  
! /* the t_glist structure, which describes a list of elements that live on an
! area of a window.
! 
! */
! 
  struct _glist {
      t_object gl_obj;            /* header in case we're a glist */
--- 92,96 ----
  } t_tick;
  
! /* the t_glist structure, which describes a list of elements that live on an area of a window.*/
  struct _glist {
      t_object gl_obj;            /* header in case we're a glist */
***************
*** 141,164 ****
      int gl_valid;               /* incremented when pointers might be stale */
      struct _glist *gl_owner;    /* parent glist, supercanvas, or 0 if none */
!     int gl_pixwidth;            /* width in pixels (on parent, if a graph) */
!     int gl_pixheight;
!     float gl_x1;                /* bounding rectangle in our own coordinates */
!     float gl_y1;
!     float gl_x2;
!     float gl_y2;
!     int gl_screenx1;            /* screen coordinates when toplevel */
!     int gl_screeny1;
!     int gl_screenx2;
!     int gl_screeny2;
!     int gl_xmargin;                /* origin for GOP rectangle */
!     int gl_ymargin;
!     t_tick gl_xtick;            /* ticks marking X values */    
!     int gl_nxlabels;            /* number of X coordinate labels */
!     t_symbol **gl_xlabel;           /* ... an array to hold them */
!     float gl_xlabely;               /* ... and their Y coordinates */
!     t_tick gl_ytick;            /* same as above for Y ticks and labels */
!     int gl_nylabels;
!     t_symbol **gl_ylabel;
!     float gl_ylabelx;
      t_editor *gl_editor;        /* editor structure when visible */
      t_symbol *gl_name;          /* symbol bound here */
--- 99,115 ----
      int gl_valid;               /* incremented when pointers might be stale */
      struct _glist *gl_owner;    /* parent glist, supercanvas, or 0 if none */
!     /* width in pixels (on parent, if a graph) */
!     int gl_pixwidth, gl_pixheight;
!     /* bounding rectangle in our own coordinates */
!     float gl_x1,gl_y1;
!     float gl_x2,gl_y2;
!      /* screen coordinates when toplevel */
!     int gl_screenx1, gl_screeny1;
!     int gl_screenx2, gl_screeny2;
!     /* origin for GOP rectangle */
!     int gl_xmargin, gl_ymargin;
!     /* ticks and tick labels */
!     t_tick gl_xtick; int gl_nxlabels; t_symbol **gl_xlabel; float gl_xlabely;
!     t_tick gl_ytick; int gl_nylabels; t_symbol **gl_ylabel; float gl_ylabelx;
      t_editor *gl_editor;        /* editor structure when visible */
      t_symbol *gl_name;          /* symbol bound here */
***************
*** 172,176 ****
      unsigned int gl_willvis:1;      /* make me visible after loading */ 
      unsigned int gl_edit:1;         /* edit mode */
!     unsigned int gl_isdeleting:1;   /* we're inside glist_delete -- hack! */
      unsigned int gl_goprect:1;      /* draw rectangle for graph-on-parent */
      unsigned int gl_isgraph:1;      /* show as graph on parent */
--- 123,127 ----
      unsigned int gl_willvis:1;      /* make me visible after loading */ 
      unsigned int gl_edit:1;         /* edit mode */
!     /* unsigned int gl_isdeleting:1;   we're inside glist_delete -- hack! */
      unsigned int gl_goprect:1;      /* draw rectangle for graph-on-parent */
      unsigned int gl_isgraph:1;      /* show as graph on parent */
***************
*** 229,240 ****
  typedef struct _linetraverser {
      t_canvas *tr_x;
!     t_object *tr_ob;
!     int tr_nout;
!     int tr_outno;
!     t_object *tr_ob2;
!     t_outlet *tr_outlet;
!     t_inlet *tr_inlet;
!     int tr_nin;
!     int tr_inno;
      t_outconnect *tr_nextoc;
      int tr_nextoutno;
--- 180,185 ----
  typedef struct _linetraverser {
      t_canvas *tr_x;
!     t_object *tr_ob;  int tr_nout; int tr_outno; t_outlet *tr_outlet;
!     t_object *tr_ob2; int tr_nin;  int tr_inno;  t_inlet  *tr_inlet;
      t_outconnect *tr_nextoc;
      int tr_nextoutno;
***************
*** 274,283 ****
  
      /* cursor definitions; used as return value for t_parentclickfn */
- #define CURSOR_RUNMODE_NOTHING 0
  #define CURSOR_RUNMODE_CLICKME 1
  #define CURSOR_RUNMODE_THICKEN 2
  #define CURSOR_RUNMODE_ADDPOINT 3
- #define CURSOR_EDITMODE_NOTHING 4
- #define CURSOR_EDITMODE_CONNECT 5
  #define CURSOR_EDITMODE_DISCONNECT 6
  EXTERN void canvas_setcursor(t_glist *x, unsigned int cursornum);
--- 219,225 ----
***************
*** 323,327 ****
  EXTERN void glist_glist(t_glist *g, t_symbol *s, int argc, t_atom *argv);
  EXTERN t_glist *glist_addglist(t_glist *g, t_symbol *sym,
!     float x1, float y1, float x2, float y2,
      float px1, float py1, float px2, float py2);
  EXTERN void glist_arraydialog(t_glist *parent, t_symbol *name,
--- 265,269 ----
  EXTERN void glist_glist(t_glist *g, t_symbol *s, int argc, t_atom *argv);
  EXTERN t_glist *glist_addglist(t_glist *g, t_symbol *sym,
!     float  x1, float  y1, float  x2, float  y2,
      float px1, float py1, float px2, float py2);
  EXTERN void glist_arraydialog(t_glist *parent, t_symbol *name,
***************
*** 337,347 ****
  
  EXTERN void text_setto(t_text *x, t_glist *glist, char *buf, int bufsize);
! EXTERN void text_drawborder(t_text *x, t_glist *glist, char *tag,
!     int width, int height, int firsttime);
  EXTERN void text_eraseborder(t_text *x, t_glist *glist, char *tag);
  EXTERN int text_xcoord(t_text *x, t_glist *glist);
  EXTERN int text_ycoord(t_text *x, t_glist *glist);
! EXTERN int text_xpix(t_text *x, t_glist *glist);
! EXTERN int text_ypix(t_text *x, t_glist *glist);
  EXTERN int text_shouldvis(t_text *x, t_glist *glist);
  
--- 279,288 ----
  
  EXTERN void text_setto(t_text *x, t_glist *glist, char *buf, int bufsize);
! EXTERN void text_drawborder(t_text *x, t_glist *glist, char *tag, int width, int height, int firsttime);
  EXTERN void text_eraseborder(t_text *x, t_glist *glist, char *tag);
  EXTERN int text_xcoord(t_text *x, t_glist *glist);
  EXTERN int text_ycoord(t_text *x, t_glist *glist);
! EXTERN int text_xpix(  t_text *x, t_glist *glist);
! EXTERN int text_ypix(  t_text *x, t_glist *glist);
  EXTERN int text_shouldvis(t_text *x, t_glist *glist);
  
***************
*** 352,356 ****
  EXTERN void rtext_gettext(t_rtext *x, char **buf, int *bufsize);
  
- /* -------------------- functions on canvases ------------------------ */
  EXTERN t_class *canvas_class;
  EXTERN t_canvas *canvas_new(void *dummy, t_symbol *sel, int argc, t_atom *argv);
--- 293,296 ----
***************
*** 458,466 ****
  EXTERN float    fielddesc_cvtfromcoord(t_fielddesc *f, float coord);
  
- /* ----------------------- guiconnects, g_guiconnect.c --------- */
  EXTERN t_guiconnect *guiconnect_new(t_pd *who, t_symbol *sym);
  EXTERN void guiconnect_notarget(t_guiconnect *x, double timedelay);
  
- /* ------------- IEMGUI routines used in other g_ files ---------------- */
  EXTERN t_symbol *iemgui_raute2dollar(t_symbol *s);
  EXTERN t_symbol *iemgui_dollar2raute(t_symbol *s);
--- 398,404 ----
***************
*** 477,481 ****
  EXTERN void pd_upload(t_gobj *self);
  EXTERN void sys_mgui(void *self,   const char *sel, const char *fmt, ...);
- EXTERN void iemgui_propertiesfn(t_gobj *x, t_glist *owner);
  EXTERN t_symbol *s_empty;
  EXTERN int convert_color2(int x);
--- 415,418 ----

Index: desire.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/Attic/desire.c,v
retrieving revision 1.1.2.139
retrieving revision 1.1.2.140
diff -C2 -d -r1.1.2.139 -r1.1.2.140
*** desire.c	2 Sep 2006 19:00:37 -0000	1.1.2.139
--- desire.c	3 Sep 2006 03:47:13 -0000	1.1.2.140
***************
*** 455,462 ****
          t->tr_outno = outno;
      }
!     t->tr_nextoc = obj_nexttraverseoutlet(rval, &t->tr_ob2,
!         &t->tr_inlet, &t->tr_inno);
      t->tr_nin = obj_ninlets(t->tr_ob2);
!     if (!t->tr_nin) bug("drawline");
      return rval;
  }
--- 455,461 ----
          t->tr_outno = outno;
      }
!     t->tr_nextoc = obj_nexttraverseoutlet(rval, &t->tr_ob2, &t->tr_inlet, &t->tr_inno);
      t->tr_nin = obj_ninlets(t->tr_ob2);
!     if (!t->tr_nin) bug("linetraverser_next");
      return rval;
  }
***************
*** 562,567 ****
  }
  
!     /* make a new glist and add it to this glist.  It will appear as
!     a "graph", not a text object.  */
  t_glist *glist_addglist(t_glist *g, t_symbol *sym,
      float  x1, float  y1, float  x2, float  y2,
--- 561,567 ----
  }
  
! #define GLIST_DEFGRAPHWIDTH 200
! #define GLIST_DEFGRAPHHEIGHT 140
! /* make a new glist and add it to this glist.  It will appear as a "graph", not a text object.  */
  t_glist *glist_addglist(t_glist *g, t_symbol *sym,
      float  x1, float  y1, float  x2, float  y2,
***************
*** 1320,1328 ****
  /* ------------------------ event handling ------------------------ */
  
- #define CURSOR_RUNMODE_CLICKME 1
- #define CURSOR_RUNMODE_THICKEN 2
- #define CURSOR_RUNMODE_ADDPOINT 3
- #define CURSOR_EDITMODE_DISCONNECT 6
- 
  void canvas_inlettip(t_canvas* x,t_object* ob,int closest,int xpos,int ypos) {
  /*
--- 1320,1323 ----
***************
*** 2691,2704 ****
  }
  
-     /* this is to protect against a hairy problem in which deleting
-     a sub-canvas might delete an inlet on a box, after the box had
-     been invisible-ized, so that we have to protect against redrawing it! */
- int canvas_setdeleting(t_canvas *x, int flag) {
-     int ret = x->gl_isdeleting;
-     x->gl_isdeleting = flag;
-     return ret;
- }
- 
- 
  /* delete an object from a glist and free it */
  void glist_delete(t_glist *x, t_gobj *y) {
--- 2686,2689 ----
***************
*** 2706,2712 ****
      t_object *ob;
      t_gotfn chkdsp = zgetfn(&y->g_pd, gensym("dsp"));
-     t_canvas *canvas = glist_getcanvas(x);
      int drawcommand = class_isdrawcommand(y->g_pd);
-     int wasdeleting = canvas_setdeleting(canvas, 1);
      if (x->gl_editor && x->gl_editor->e_grab == y) x->gl_editor->e_grab = 0;
  
--- 2691,2695 ----
***************
*** 2729,2733 ****
      if (drawcommand)
          canvas_redrawallfortemplate(template_findbyname(canvas_makebindsym(glist_getcanvas(x)->gl_name)), 1);
-     canvas_setdeleting(canvas, wasdeleting);
      x->gl_valid = ++glist_valid;
  }
--- 2712,2715 ----
***************
*** 3009,3025 ****
  float glist_xtopixels(t_glist *x, float xval) {
      int x1, y1, x2, y2;
!     if (!x->gl_isgraph) return (xval - x->gl_x1) / (x->gl_x2 - x->gl_x1);
!     if (x->gl_havewindow) return (x->gl_screenx2 - x->gl_screenx1) * (xval - x->gl_x1) / (x->gl_x2 - x->gl_x1);
      if (!x->gl_owner) bug("glist_pixelstox");
      graph_graphrect(&x->gl_gobj, x->gl_owner, &x1, &y1, &x2, &y2);
!     return x1 + (x2 - x1) * (xval - x->gl_x1) / (x->gl_x2 - x->gl_x1);
  }
  float glist_ytopixels(t_glist *x, float yval) {
      int x1, y1, x2, y2;
!     if (!x->gl_isgraph) return (yval - x->gl_y1) / (x->gl_y2 - x->gl_y1);
!     if (x->gl_havewindow) return (x->gl_screeny2 - x->gl_screeny1) * (yval - x->gl_y1) / (x->gl_y2 - x->gl_y1);
      if (!x->gl_owner) bug("glist_pixelstox");
      graph_graphrect(&x->gl_gobj, x->gl_owner, &x1, &y1, &x2, &y2);
!     return y1 + (y2 - y1) * (yval - x->gl_y1) / (x->gl_y2 - x->gl_y1);
  }
  
--- 2991,3009 ----
  float glist_xtopixels(t_glist *x, float xval) {
      int x1, y1, x2, y2;
!     float width = x->gl_x2-x->gl_x1;
!     if (!x->gl_isgraph) return (xval - x->gl_x1) / width;
!     if (x->gl_havewindow) return (x->gl_screenx2-x->gl_screenx1) * (xval-x->gl_x1) / width;
      if (!x->gl_owner) bug("glist_pixelstox");
      graph_graphrect(&x->gl_gobj, x->gl_owner, &x1, &y1, &x2, &y2);
!     return x1 + (x2 - x1) * (xval - x->gl_x1) / width;
  }
  float glist_ytopixels(t_glist *x, float yval) {
      int x1, y1, x2, y2;
!     float height = x->gl_y2-x->gl_y1;
!     if (!x->gl_isgraph) return (yval - x->gl_y1) / height;
!     if (x->gl_havewindow) return (x->gl_screeny2-x->gl_screeny1) * (yval-x->gl_y1) / height;
      if (!x->gl_owner) bug("glist_pixelstox");
      graph_graphrect(&x->gl_gobj, x->gl_owner, &x1, &y1, &x2, &y2);
!     return y1 + (y2 - y1) * (yval - x->gl_y1) / height;
  }
  
***************
*** 3142,3153 ****
                  int tickpix = i%x->gl_ytick.k_lperb ? 2 : 4;
  		int y0 = (int)glist_ytopixels(x, f);
!                 sys_vgui(".x%lx.c create line %d %d %d %d -tags %s\n", (long)c, x1, y0, x1 + tickpix, y0, tag);
!                 sys_vgui(".x%lx.c create line %d %d %d %d -tags %s\n", (long)c, x2, y0, x2 - tickpix, y0, tag);
              }
              for (i = 1, f = x->gl_ytick.k_point - x->gl_ytick.k_inc; f > 0.99 * lbound + 0.01 * ubound; i++, f -= x->gl_ytick.k_inc) {
                  int tickpix = i%x->gl_ytick.k_lperb ? 2 : 4;
  		int y0 = (int)glist_ytopixels(x, f);
!                 sys_vgui(".x%lx.c create line %d %d %d %d -tags %s\n", (long)c, x1, y0, x1 + tickpix, y0, tag);
!                 sys_vgui(".x%lx.c create line %d %d %d %d -tags %s\n", (long)c, x2, y0, x2 - tickpix, y0, tag);
              }
          }
--- 3126,3137 ----
                  int tickpix = i%x->gl_ytick.k_lperb ? 2 : 4;
  		int y0 = (int)glist_ytopixels(x, f);
!                 sys_vgui(".x%lx.c create line %d %d %d %d -tags %s\n", (long)c, x1, y0, x1+tickpix, y0, tag);
!                 sys_vgui(".x%lx.c create line %d %d %d %d -tags %s\n", (long)c, x2, y0, x2-tickpix, y0, tag);
              }
              for (i = 1, f = x->gl_ytick.k_point - x->gl_ytick.k_inc; f > 0.99 * lbound + 0.01 * ubound; i++, f -= x->gl_ytick.k_inc) {
                  int tickpix = i%x->gl_ytick.k_lperb ? 2 : 4;
  		int y0 = (int)glist_ytopixels(x, f);
!                 sys_vgui(".x%lx.c create line %d %d %d %d -tags %s\n", (long)c, x1, y0, x1+tickpix, y0, tag);
!                 sys_vgui(".x%lx.c create line %d %d %d %d -tags %s\n", (long)c, x2, y0, x2-tickpix, y0, tag);
              }
          }
***************
*** 3247,3251 ****
      x->x_who = who;
      x->x_sym = sym;
!     pd_bind(&x->x_obj.ob_pd, sym);
      return x;
  }
--- 3231,3235 ----
      x->x_who = who;
      x->x_sym = sym;
!     pd_bind((t_pd *)x, sym);
      return x;
  }
***************
*** 3253,3257 ****
  /* cleanup routine; delete any resources we have */
  static void guiconnect_free(t_guiconnect *x) {
!     if (x->x_sym) pd_unbind(&x->x_obj.ob_pd, x->x_sym);
      if (x->x_clock) clock_free(x->x_clock);
  }
--- 3237,3241 ----
  /* cleanup routine; delete any resources we have */
  static void guiconnect_free(t_guiconnect *x) {
!     if (x->x_sym) pd_unbind((t_pd *)x, x->x_sym);
      if (x->x_clock) clock_free(x->x_clock);
  }
***************
*** 3264,3268 ****
     or for a timeout. */
  void guiconnect_notarget(t_guiconnect *x, double timedelay) {
!     if (!x->x_sym) pd_free(&x->x_obj.ob_pd);
      else {
          x->x_who = 0;
--- 3248,3252 ----
     or for a timeout. */
  void guiconnect_notarget(t_guiconnect *x, double timedelay) {
!     if (!x->x_sym) pd_free((t_pd *)x);
      else {
          x->x_who = 0;
***************
*** 3283,3289 ****
      a timeout after which the guiconnect will disappear.) */
  static void guiconnect_signoff(t_guiconnect *x) {
!     if (!x->x_who) pd_free(&x->x_obj.ob_pd);
      else {
!         pd_unbind(&x->x_obj.ob_pd, x->x_sym);
          x->x_sym = 0;
      }
--- 3267,3273 ----
      a timeout after which the guiconnect will disappear.) */
  static void guiconnect_signoff(t_guiconnect *x) {
!     if (!x->x_who) pd_free((t_pd *)x);
      else {
!         pd_unbind((t_pd *)x, x->x_sym);
          x->x_sym = 0;
      }
***************
*** 3491,3502 ****
  }
  
! void glist_read(t_glist *x, t_symbol *filename, t_symbol *format)
! {glist_doread(x, filename, format, 1);}
! void glist_mergefile(t_glist *x, t_symbol *filename, t_symbol *format)
! {glist_doread(x, filename, format, 0);}
  
!     /* read text from a "properties" window, called from a gfxstub set
!     up in scalar_properties().  We try to restore the object; if successful
!     we delete the scalar and put the new thing in its place on the list. */
  void canvas_dataproperties(t_canvas *x, t_scalar *sc, t_binbuf *b) {
      int ntotal, nnew, scindex;
--- 3475,3484 ----
  }
  
! void glist_read(t_glist *x, t_symbol *filename, t_symbol *format)      {glist_doread(x,filename,format,1);}
! void glist_mergefile(t_glist *x, t_symbol *filename, t_symbol *format) {glist_doread(x,filename,format,0);}
  
! /* read text from a "properties" window, called from a gfxstub set
!    up in scalar_properties().  We try to restore the object; if successful
!    we delete the scalar and put the new thing in its place on the list. */
  void canvas_dataproperties(t_canvas *x, t_scalar *sc, t_binbuf *b) {
      int ntotal, nnew, scindex;





More information about the Pd-cvs mailing list