[PD-cvs] pd/src desire.c,1.1.2.217.2.25,1.1.2.217.2.26
Mathieu Bouchard
matju at users.sourceforge.net
Tue Dec 5 08:39:17 CET 2006
Update of /cvsroot/pure-data/pd/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6880
Modified Files:
Tag: desiredata
desire.c
Log Message:
manager stack
Index: desire.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/Attic/desire.c,v
retrieving revision 1.1.2.217.2.25
retrieving revision 1.1.2.217.2.26
diff -C2 -d -r1.1.2.217.2.25 -r1.1.2.217.2.26
*** desire.c 5 Dec 2006 07:26:01 -0000 1.1.2.217.2.25
--- desire.c 5 Dec 2006 07:39:13 -0000 1.1.2.217.2.26
***************
*** 273,277 ****
static t_class *manager_class;
t_manager *manager;
- t_manager *origin=0; /* 0 means unknown */
void manager_call (void *foo) {
--- 273,276 ----
***************
*** 321,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) {
! origin = manager;
binbuf_clear(self->b);
binbuf_addv(self->b,"s",s);
binbuf_add(self->b,argc,argv);
binbuf_eval(self->b,0,0,0);
! origin = 0;
}
--- 320,351 ----
void manager_nevermind (t_gobj *victim) {queue_nevermind(manager->q,victim);}
! struct t_origin_stack {
! t_manager *head;
! t_origin_stack *tail;
! };
! t_origin_stack origin_stack_pointee = {manager,0};
! t_origin_stack *origin_stack = &origin_stack_pointee;
!
! //t_manager *origin=0; /* 0 means unknown */
! t_manager *pd_origin() {return origin_stack->head;}
! void pd_push_origin(t_manager *orig) {
! t_origin_stack *self = new t_origin_stack;
! self->head = orig;
! self->tail = origin_stack;
! origin_stack = self;
! }
! void pd_pop_origin() {
! t_origin_stack *self = origin_stack->tail;
! delete origin_stack;
! origin_stack = self;
! }
!
extern "C" void manager_anything (t_manager *self, t_symbol *s, int argc, t_atom *argv) {
! pd_push_origin(self);
binbuf_clear(self->b);
binbuf_addv(self->b,"s",s);
binbuf_add(self->b,argc,argv);
binbuf_eval(self->b,0,0,0);
! pd_pop_origin();
}
***************
*** 847,851 ****
void pd_set_newest (t_pd *x) {
newest = x;
! if (!origin) return; /* the following only applies to objects created by client */
unsigned short serial = manager->serial++;
sys_vgui("serial %d x%lx\n",serial,(long)x);
--- 865,869 ----
void pd_set_newest (t_pd *x) {
newest = x;
! if (!pd_origin()) return; /* the following only applies to objects created by client */
unsigned short serial = manager->serial++;
sys_vgui("serial %d x%lx\n",serial,(long)x);
More information about the Pd-cvs
mailing list