[PD-cvs] pd/src desire.c,1.1.2.42,1.1.2.43
Mathieu Bouchard
matju at users.sourceforge.net
Sat Oct 29 18:01:08 CEST 2005
Update of /cvsroot/pure-data/pd/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11559
Modified Files:
Tag: devel_0_39
desire.c
Log Message:
t_manager is now a true pd class
Index: desire.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/Attic/desire.c,v
retrieving revision 1.1.2.42
retrieving revision 1.1.2.43
diff -C2 -d -r1.1.2.42 -r1.1.2.43
*** desire.c 29 Oct 2005 11:40:32 -0000 1.1.2.42
--- desire.c 29 Oct 2005 16:01:06 -0000 1.1.2.43
***************
*** 114,121 ****
void queue_put (t_queue *self, void *stuff) {
if (self->len==QUEUE_SIZE) {bug("queue full"); return;}
self->o[(self->start+self->len)%QUEUE_SIZE] = stuff;
self->len++;
! post("queue_get: items in queue: %d",self->len);
}
--- 114,122 ----
void queue_put (t_queue *self, void *stuff) {
+ post("HEY");
if (self->len==QUEUE_SIZE) {bug("queue full"); return;}
self->o[(self->start+self->len)%QUEUE_SIZE] = stuff;
self->len++;
! post("queue_put: items in queue: %d",self->len);
}
***************
*** 128,131 ****
--- 129,137 ----
}
+ void queue_free (t_queue *self) {
+ abort();
+ free(self);
+ }
+
int queue_empty (t_queue *self) {return self->len==0;}
int queue_full (t_queue *self) {return self->len==QUEUE_SIZE;}
***************
*** 135,145 ****
typedef struct _manager {
t_queue *q;
t_clock *clock;
} t_manager;
t_manager *manager;
! void manager_call (void *foo) {
t_manager *self = (t_manager *)foo;
while (!queue_empty(self->q)) {
--- 141,153 ----
typedef struct _manager {
+ t_gobj super;
t_queue *q;
t_clock *clock;
} t_manager;
+ static t_class *manager_class;
t_manager *manager;
! void manager_call (void *foo) {L
t_manager *self = (t_manager *)foo;
while (!queue_empty(self->q)) {
***************
*** 152,164 ****
}
! void manager_notice (t_manager *self, t_gobj *origin, int argc, t_atom *argv) {
t_appendix *a = (t_appendix *)origin->g_adix;
! if (!a->dirtyc) queue_put(self->q,origin);
! a->dirtyc = 1;
SETFLOAT(a->dirtyv,-1); /* in the future this may contain real data instead */
}
! t_manager *manager_new (void) {
! t_manager *self = (t_manager *)malloc(sizeof(t_manager));
self->q = queue_new();
self->clock = clock_new(self,(t_method)manager_call);
--- 160,176 ----
}
! void manager_notice (t_gobj *self_, t_gobj *origin, int argc, t_atom *argv) {L
! t_manager *self = (t_manager *)self;
t_appendix *a = (t_appendix *)origin->g_adix;
! if (!a->dirtyc) {
! queue_put(self->q,origin);
! a->dirtyc = 1;
! }
SETFLOAT(a->dirtyv,-1); /* in the future this may contain real data instead */
}
! t_manager *manager_new (t_symbol *s, int argc, t_atom *argv) {L
! t_manager *self = (t_manager *)pd_new(manager_class);
! self->super.g_adix = appendix_new((t_gobj *)self);
self->q = queue_new();
self->clock = clock_new(self,(t_method)manager_call);
***************
*** 167,170 ****
--- 179,188 ----
}
+ void manager_free (t_manager *self) {L
+ clock_free(self->clock);
+ queue_free(self->q);
+ pd_free((t_pd *)self);
+ }
+
//--------------------------------------------------------------------------
/* the "glist" class is also known as "canvas" (the two used
***************
*** 226,232 ****
}
}
! glist_each(g,gl)
! //for (g = gl->gl_list; g; g = g->g_next)
! {
if (pd_class(&g->g_pd) == canvas_class)
glist_doupdatewindowlist((t_glist *)g, sbuf);
--- 244,248 ----
}
}
! glist_each(g,gl) {
if (pd_class(&g->g_pd) == canvas_class)
glist_doupdatewindowlist((t_glist *)g, sbuf);
***************
*** 253,257 ****
x->gl_next = canvas_list;
canvas_list = x;
! canvas_redraw(x);
}
--- 269,276 ----
x->gl_next = canvas_list;
canvas_list = x;
! post("addtolist %lx",(long)x);
! gobj_subscribe((t_gobj *)x,(t_gobj *)manager);
! gobj_changed(x,"");
! // canvas_redraw(x);
}
***************
*** 12416,12420 ****
}
binbuf_gettext(buf,&s,&n);
! sys_vgui("update_object %x {%.*s}\n", (unsigned)self,n,s);
sys_mgui(self,"ninlets=","i", obj_ninlets((t_text *)self));
sys_mgui(self,"noutlets=","i",obj_noutlets((t_text *)self));
--- 12435,12439 ----
}
binbuf_gettext(buf,&s,&n);
! sys_vgui("update_object %lx {%.*s}\n", (long)self,n,s);
sys_mgui(self,"ninlets=","i", obj_ninlets((t_text *)self));
sys_mgui(self,"noutlets=","i",obj_noutlets((t_text *)self));
***************
*** 13388,13396 ****
t_canvas *self = (t_canvas *)x;
post("canvas_notice(%p,%p,%d,...): havewindow=%d mapped=%d",x,origin,argc,self->gl_havewindow,self->gl_mapped);
! if (self->gl_havewindow /* && self->gl_mapped */) {
! manager_notice(manager,origin,argc,argv);
! } else {
gobj_changed3(self,origin,argc,argv);
! }
}
--- 13407,13415 ----
t_canvas *self = (t_canvas *)x;
post("canvas_notice(%p,%p,%d,...): havewindow=%d mapped=%d",x,origin,argc,self->gl_havewindow,self->gl_mapped);
! // if (self->gl_havewindow /* && self->gl_mapped */) {
! // manager_notice(manager,origin,argc,argv);
! // } else {
gobj_changed3(self,origin,argc,argv);
! // }
}
***************
*** 13494,13498 ****
void desire_setup(void) {
! manager = manager_new();
#define S(x) x##_setup();
S(vinlet) S(voutlet)
--- 13513,13520 ----
void desire_setup(void) {
! manager_class = class_new(gensym("__manager"), (t_newmethod)manager_new,
! (t_method)manager_free, sizeof(t_manager), CLASS_NOINLET, A_GIMME, 0);
! class_setnotice(manager_class,manager_notice);
! manager = manager_new(0,0,0);
#define S(x) x##_setup();
S(vinlet) S(voutlet)
More information about the Pd-cvs
mailing list