Update of /cvsroot/pure-data/pd/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29521
Modified Files: Tag: devel_0_39 desire.c desire.tk Log Message: server-side queue now works
Index: desire.tk =================================================================== RCS file: /cvsroot/pure-data/pd/src/Attic/desire.tk,v retrieving revision 1.1.2.85 retrieving revision 1.1.2.86 diff -C2 -d -r1.1.2.85 -r1.1.2.86 *** desire.tk 21 Oct 2005 13:47:09 -0000 1.1.2.85 --- desire.tk 29 Oct 2005 11:40:32 -0000 1.1.2.86 *************** *** 63,66 **** --- 63,75 ---- }
+ def observable child_changed {origin args} { + foreach x $@subscribers {eval [concat [list $x notice $origin] $args]} + } + + #-----------------------------------------------------------------------------------# + set poolset(foo) bar + array unset poolset foo + set poolqueue {} + #-----------------------------------------------------------------------------------# # this is the beginning of the more application-dependent part. *************** *** 627,631 **** #-----------------------------------------------------------------------------------# # check or uncheck the "edit" menu item ! def* canvas editmode {mode} { global look .x$self.m.edit entryconfigure "Edit mode" -indicatoron $mode --- 636,640 ---- #-----------------------------------------------------------------------------------# # check or uncheck the "edit" menu item ! def* canvas editmode= {mode} { global look .x$self.m.edit entryconfigure "Edit mode" -indicatoron $mode *************** *** 673,677 **** $self new_binds focus $c ! $self editmode $editable set @action none set @selection {} --- 682,686 ---- $self new_binds focus $c ! $self editmode= $editable set @action none set @selection {} *************** *** 1620,1623 **** --- 1629,1642 ---- }
+ def canvas notice {origin args} { + global pool + set has_window 1 + if {$has_window} { + set pool($origin) 1 + } { + eval [concat [list child_changed $origin] $args] + } + } + #-----------------------------------------------------------------------------------# set lastcanvasconfigured ""
Index: desire.c =================================================================== RCS file: /cvsroot/pure-data/pd/src/Attic/desire.c,v retrieving revision 1.1.2.41 retrieving revision 1.1.2.42 diff -C2 -d -r1.1.2.41 -r1.1.2.42 *** desire.c 29 Oct 2005 10:30:18 -0000 1.1.2.41 --- desire.c 29 Oct 2005 11:40:32 -0000 1.1.2.42 *************** *** 42,45 **** --- 42,46 ---- t_appendix *appendix_new (t_gobj *master) { t_appendix *self = (t_appendix *)malloc(sizeof(t_appendix)); + post("appendix_new: %p for %p",self,master); self->master = master; self->next = 0; *************** *** 116,119 **** --- 117,121 ---- self->o[(self->start+self->len)%QUEUE_SIZE] = stuff; self->len++; + post("queue_get: items in queue: %d",self->len); }
*************** *** 122,125 **** --- 124,128 ---- self->start = (self->start+1)%QUEUE_SIZE; self->len--; + post("queue_get: items in queue: %d",self->len); return r; } *************** *** 250,253 **** --- 253,257 ---- x->gl_next = canvas_list; canvas_list = x; + canvas_redraw(x); }
*************** *** 423,429 **** int glist_valid = 10000;
! void glist_init(t_glist *x) ! { ! /* zero out everyone except "pd" field */ memset(((char *)x) + sizeof(x->gl_pd), 0, sizeof(*x) - sizeof(x->gl_pd)); x->gl_stub = gstub_new(x, 0); --- 427,432 ---- int glist_valid = 10000;
! void glist_init(t_glist *x) { ! /* zero out everyone except "pd" field */ memset(((char *)x) + sizeof(x->gl_pd), 0, sizeof(*x) - sizeof(x->gl_pd)); x->gl_stub = gstub_new(x, 0); *************** *** 431,434 **** --- 434,438 ---- x->gl_xlabel = (t_symbol **)t_getbytes(0); x->gl_ylabel = (t_symbol **)t_getbytes(0); + ((t_gobj *)x)->g_adix = appendix_new((t_gobj *)x); }
*************** *** 448,453 **** if (!owner) canvas_addtolist(x); - /* post("canvas %lx, owner %lx", x, owner); */ - if (argc == 5) /* toplevel */ pd_scanargs(argc,argv,"iiiii",&xloc,&yloc,&width,&height,&font); --- 452,455 ---- *************** *** 638,644 **** { char buf[MAXPDSTRING]; ! strcpy(buf, "pd-"); ! strcat(buf, s->s_name); ! return (gensym(buf)); }
--- 640,645 ---- { char buf[MAXPDSTRING]; ! sprintf(buf,"pd-%s",s->s_name); ! return gensym(buf); }
*************** *** 782,791 **** void canvas_vis(t_canvas *x, t_floatarg f) { ! int flag = (f != 0); ! if (flag) { - /* post("havewindow %d, isgraph %d, isvisible %d editor %d", - x->gl_havewindow, x->gl_isgraph, glist_isvisible(x), - (x->gl_editor != 0)); */ /* test if we're already visible and toplevel */ if (x->gl_editor) --- 783,788 ---- void canvas_vis(t_canvas *x, t_floatarg f) { ! if (!!f) { /* test if we're already visible and toplevel */ if (x->gl_editor) *************** *** 2358,2362 **** static void canvas_done_popup(t_canvas *x, float which, float xpos, float ypos) { ! char pathbuf[MAXPDSTRING], namebuf[MAXPDSTRING]; t_gobj *y; for (y = x->gl_list; y; y = y->g_next) --- 2355,2359 ---- static void canvas_done_popup(t_canvas *x, float which, float xpos, float ypos) { ! char namebuf[MAXPDSTRING]; t_gobj *y; for (y = x->gl_list; y; y = y->g_next) *************** *** 2408,2416 **** canvas_properties(x); else if (which == 2) ! { ! strcpy(pathbuf, sys_libdir->s_name); ! strcat(pathbuf, "/doc/5.reference/0.INTRO.txt"); ! sys_vgui("menu_opentext %s\n", pathbuf); ! } }
--- 2405,2409 ---- canvas_properties(x); else if (which == 2) ! sys_vgui("menu_opentext %s%s\n", sys_libdir->s_name,"/doc/5.reference/0.INTRO.txt"); }
*************** *** 3738,3742 **** canvas_setcursor(x, CURSOR_RUNMODE_NOTHING); } ! sys_vgui("%lx editval %d\n", (long)glist_getcanvas(x), x->gl_edit); }
--- 3731,3735 ---- canvas_setcursor(x, CURSOR_RUNMODE_NOTHING); } ! sys_mgui(glist_getcanvas(x),"editmode=","i",x->gl_edit); }
*************** *** 5286,5290 **** void glist_add(t_glist *x, t_gobj *y) { ! y->g_adix = appendix_new(y); /* mb: i found no better place for initing this */ gobj_subscribe(y,(t_gobj *)x); gobj_changed(y,""); --- 5279,5283 ---- void glist_add(t_glist *x, t_gobj *y) { ! if (!y->g_adix) y->g_adix = appendix_new(y); /* mb: i found no better place for initing this */ gobj_subscribe(y,(t_gobj *)x); gobj_changed(y,""); *************** *** 5297,5301 **** y2->g_next = y; } ! sys_mgui(x,"add","p",y); /* voodoo */ /* if (x->gl_editor && (ob = pd_checkobject(&y->g_pd))) rtext_new(x, ob); */ --- 5290,5295 ---- y2->g_next = y; } ! gobj_changed(x,""); ! // sys_mgui(x,"add","p",y); /* voodoo */ /* if (x->gl_editor && (ob = pd_checkobject(&y->g_pd))) rtext_new(x, ob); */ *************** *** 5330,5336 **** t_canvas *canvas = glist_getcanvas(x); int drawcommand = class_isdrawcommand(y->g_pd); ! int wasdeleting; ! ! wasdeleting = canvas_setdeleting(canvas, 1); if (x->gl_editor) { --- 5324,5328 ---- t_canvas *canvas = glist_getcanvas(x); int drawcommand = class_isdrawcommand(y->g_pd); ! int wasdeleting = canvas_setdeleting(canvas, 1); if (x->gl_editor) { *************** *** 12417,12434 **** int n; char *s; ! if (strcmp(c->c_name->s_name,"canvas")!=0) { ! c->c_savefn(self,buf); ! } else { /* just the "#N canvas" line, not the contents */ ! canvas_savecontainerto((t_canvas *)c,buf); } 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)); ! sys_vgui("%lx ninlets= %d\n", (long)self, obj_ninlets((t_text *)self)); ! sys_vgui("%lx noutlets= %d\n", (long)self, obj_noutlets((t_text *)self)); binbuf_free(buf); free(s); }
--- 12409,12432 ---- int n; char *s; ! if (c==canvas_class) { /* just the "#N canvas" line, not the contents */ ! canvas_savecontainerto((t_canvas *)self,buf); ! } else { ! c->c_savefn(self,buf); } 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)); binbuf_free(buf); free(s); + if (c==canvas_class) { + // buffer overflow bug here + char foo[4096]; + char *bar = foo; + t_gobj *y; + glist_each(y,(t_canvas *)self) bar+=sprintf(bar,"%lx ",(long)y); + sys_mgui((t_gobj *)self,"children=","S",foo); + } }
*************** *** 13389,13394 **** void canvas_notice(t_gobj *x, struct _gobj *origin, int argc, t_atom *argv) { t_canvas *self = (t_canvas *)x; ! post("canvas_notice(%p,%p,%d,...)",x,origin,argc); ! if (self->gl_havewindow && self->gl_mapped) { manager_notice(manager,origin,argc,argv); } else { --- 13387,13392 ---- void canvas_notice(t_gobj *x, struct _gobj *origin, int argc, t_atom *argv) { 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 {