[PD-cvs] pd/src desire.c,1.1.2.217.2.5,1.1.2.217.2.6

Mathieu Bouchard matju at users.sourceforge.net
Sat Dec 2 04:07:01 CET 2006


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

Modified Files:
      Tag: desiredata
	desire.c 
Log Message:
added pd_new2, pd_new3, manager_anything


Index: desire.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/Attic/desire.c,v
retrieving revision 1.1.2.217.2.5
retrieving revision 1.1.2.217.2.6
diff -C2 -d -r1.1.2.217.2.5 -r1.1.2.217.2.6
*** desire.c	1 Dec 2006 21:00:00 -0000	1.1.2.217.2.5
--- desire.c	2 Dec 2006 03:06:57 -0000	1.1.2.217.2.6
***************
*** 83,86 ****
--- 83,91 ----
  t_symbol *s_empty, *s_pd, *s_Pd;
  
+ struct _binbuf {
+     int b_n;
+     t_atom *b_vec;
+ };
+ 
  //--------------------------------------------------------------------------
  // t_appendix: an extension to t_gobj made by matju so that
***************
*** 253,264 ****
  // update manager:
  
! struct t_manager : t_gobj {
  	t_queue *q;
  	t_clock *clock;
  	unsigned short serial; /* of objects created by the client */
  };
  
  static t_class *manager_class;
! static t_manager *manager;
  
  void manager_call (void *foo) {
--- 258,271 ----
  // update manager:
  
! struct t_manager : t_text {
  	t_queue *q;
  	t_clock *clock;
  	unsigned short serial; /* of objects created by the client */
+ 	t_binbuf *b; /* reusable, for processing messages from the gui */
  };
  
  static t_class *manager_class;
! t_manager *manager;
! t_manager *origin=0; /* 0 means unknown */
  
  void manager_call (void *foo) {
***************
*** 294,297 ****
--- 301,305 ----
  	self->clock = clock_new(self,(t_method)manager_call);
  	self->serial = 0;
+ 	self->b = binbuf_new();
  	clock_delay(self->clock,0);
  	return self;
***************
*** 301,304 ****
--- 309,313 ----
  	clock_free(self->clock);
  	queue_free(self->q);
+ 	binbuf_free(self->b);
  	pd_free(self);
  }
***************
*** 306,309 ****
--- 315,333 ----
  void manager_nevermind (t_gobj *victim) {queue_nevermind(manager->q,victim);}
  
+ /* this has to change later when we get multiple managers (and thus the manager variable will disappear) */
+ /* this also has to change when we get stackable origins */
+ extern "C" void manager_anything (t_manager *self, t_symbol *s, int argc, t_atom *argv) {
+ /*
+ 	t_binbuf b = {argc,argv};
+ 	origin = manager;
+ 	binbuf_eval(&b,0,0,0);
+ 	origin = 0;
+ */
+ 	binbuf_clear(self->b);
+ 	binbuf_addv(self->b,"s",s);
+ 	binbuf_add(self->b,argc,argv);
+ 	binbuf_eval(self->b,0,0,0);
+ }
+ 
  //--------------------------------------------------------------------------
  /* 
***************
*** 322,326 ****
  
  extern short next_object;
- t_manager *origin=0; /* 0 means unknown */
  extern t_pd *newest;
  t_class *canvas_class;
--- 346,349 ----
***************
*** 336,347 ****
  static t_atom *canvas_newargv;
  
- /* this has to change later when we get multiple managers (and thus the manager variable will disappear) */
- /* this also has to change when we get stackable origins */
- extern "C" void binbuf_eval_from_client (t_binbuf *b) {
- 	origin = manager;
- 	binbuf_eval(b,0,0,0);
- 	origin = 0;
- }
- 
  /* add a canvas the list of "root" canvases (toplevels without parents.) */
  static void canvas_addtolist(t_canvas *x) {
--- 359,362 ----
***************
*** 2240,2248 ****
  void canvas_drawredrect(t_canvas *x, int doit);
  
- struct _binbuf {
-     int b_n;
-     t_atom *b_vec;
- };
- 
  void canvas_add(t_canvas *x, t_gobj *y) {
  #ifdef DEBUG_CANVAS_ADD
--- 2255,2258 ----
***************
*** 3800,3804 ****
          if (wb) wb->w_parentvisfn(y, owner, x->sc_vec, t, basex, basey, vis);
      }
!     sys_unqueuegui(x);
  }
  
--- 3810,3814 ----
          if (wb) wb->w_parentvisfn(y, owner, x->sc_vec, t, basex, basey, vis);
      }
!     //sys_unqueuegui(x);
  }
  
***************
*** 3809,3813 ****
  
  void scalar_redraw(t_scalar *x, t_canvas *canvas) {
!     if (canvas_isvisible(canvas)) sys_queuegui(x, canvas, scalar_doredraw);
  }
  
--- 3819,3823 ----
  
  void scalar_redraw(t_scalar *x, t_canvas *canvas) {
!     //if (canvas_isvisible(canvas)) sys_queuegui(x, canvas, scalar_doredraw);
  }
  
***************
*** 7698,7701 ****
--- 7708,7724 ----
  EXTERN t_class *glob_pdobject;
  
+ t_pd *pd_new2(int argc, t_atom *argv) {
+ 	if (argv[0].a_type != A_SYMBOL) {error("pd_new2: start with symbol please"); return 0;}
+ 	pd_typedmess(&pd_objectmaker,argv[0].a_w.w_symbol,argc-1,argv+1);
+ 	return newest;
+ }
+ t_pd *pd_new3(const char *s) {
+ 	t_binbuf *b = binbuf_new();
+ 	binbuf_text(b,(char *)s,strlen(s));
+ 	t_pd *self = pd_new2(b->b_n,b->b_vec);
+ 	binbuf_free(b);
+ 	return self;
+ }
+ 
  extern "C"
  void desire_setup(void) {
***************
*** 7704,7708 ****
      s_pd = gensym("pd");
      manager_class = class_new(gensym("__manager"), (t_newmethod)manager_new,
! 	(t_method)manager_free, sizeof(t_manager), CLASS_GOBJ, A_GIMME, 0);
      class_setnotice(manager_class,manager_notice);
      manager = manager_new(0,0,0);
--- 7727,7732 ----
      s_pd = gensym("pd");
      manager_class = class_new(gensym("__manager"), (t_newmethod)manager_new,
! 	(t_method)manager_free, sizeof(t_manager), 0, A_GIMME, 0);
!     class_addanything(manager_class,manager_anything);
      class_setnotice(manager_class,manager_notice);
      manager = manager_new(0,0,0);
***************
*** 7720,7729 ****
  }
  
  extern "C" void desire_glob_init(void) {
!     class_addmethod3(glob_pdobject, glob_update_class_list, "update-class-list", "ss");
!     class_addmethod3(glob_pdobject, glob_update_class_info, "update-class-info", "sss");
!     class_addmethod3(glob_pdobject, glob_update_path,       "update-path", "");
!     class_addmethod3(glob_pdobject, glob_help,              "help", "s");
!     class_addmethod3(glob_pdobject, glob_redraw,            "redraw", "");
  }
  
--- 7744,7758 ----
  }
  
+ /* ---------------------------------------------------------------- */
+ /* formerly m_glob.c */
+ 
+ extern t_class *glob_pdobject;
  extern "C" void desire_glob_init(void) {
!     t_class *c = glob_pdobject;
!     class_addmethod3(c, glob_update_class_list, "update-class-list", "ss");
!     class_addmethod3(c, glob_update_class_info, "update-class-info", "sss");
!     class_addmethod3(c, glob_update_path,       "update-path", "");
!     class_addmethod3(c, glob_help,              "help", "s");
!     class_addmethod3(c, glob_redraw,            "redraw", "");
  }
  





More information about the Pd-cvs mailing list