Update of /cvsroot/pure-data/pd/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8063
Modified Files: Tag: desiredata desire.c Log Message: doesn't upload more objects than necessary.
Index: desire.c =================================================================== RCS file: /cvsroot/pure-data/pd/src/Attic/desire.c,v retrieving revision 1.1.2.217.2.126 retrieving revision 1.1.2.217.2.127 diff -C2 -d -r1.1.2.217.2.126 -r1.1.2.217.2.127 *** desire.c 11 Jan 2007 20:02:08 -0000 1.1.2.217.2.126 --- desire.c 11 Jan 2007 22:01:43 -0000 1.1.2.217.2.127 *************** *** 661,668 **** static void graph_vis(t_gobj *gr, int vis);
static void canvas_redraw(t_canvas *x) { gobj_changed(x,0); canvas_each(y,x) { ! if (y->_class==canvas_class) canvas_redraw((t_canvas *)y); else gobj_changed(y,0); } } --- 661,674 ---- static void graph_vis(t_gobj *gr, int vis);
+ /* this goes with the question: should gobj_changed(x,0) be recursive on a canvas? + if yes, then canvas_redraw should be merged into gobj_changed. */ static void canvas_redraw(t_canvas *x) { + post("canvas isvisible %d",canvas_isvisible(x)); + if (!canvas_isvisible(x)) return; gobj_changed(x,0); canvas_each(y,x) { ! if (y->_class==canvas_class) { ! canvas_redraw((t_canvas *)y); ! } else gobj_changed(y,0); } } *************** *** 699,703 **** if (f!=0 && !canvas_isvisible(x)) { gobj_subscribe(x,manager); ! gobj_changed(x,0); canvas_each(y,x) gobj_changed(y,0); // could be made implicit canvas_wires_each(oc,t,x) gobj_changed(oc,0); // this too } --- 705,714 ---- if (f!=0 && !canvas_isvisible(x)) { gobj_subscribe(x,manager); ! canvas_redraw(x); ! gobj_changed(x,0); ! canvas_each(y,x) { ! if (y->_class==canvas_class && canvas_getcanvas((t_canvas *)y)==x) canvas_map((t_canvas *)y,1); ! gobj_changed(y,0); // could be made implicit ! } canvas_wires_each(oc,t,x) gobj_changed(oc,0); // this too } *************** *** 707,712 **** --- 718,726 ----
static void canvas_vis(t_canvas *x, t_floatarg f) { + int hadwindow = x->havewindow; /* if window contents have never been subscribed it should subscribe them here but it doesn't */ SET(havewindow,!!f); + if (!hadwindow && x->havewindow) canvas_map(x,1); + if (hadwindow && !x->havewindow) canvas_map(x,0); }
*************** *** 769,772 **** --- 783,787 ---- static void canvas_push(t_canvas *x) {pd_pushsym(x);}
+ /* assuming that this only ever gets called on toplevel canvases (?) */ static void canvas_pop(t_canvas *x, t_floatarg fvis) { pd_popsym(x); *************** *** 774,783 **** canvas_resortinlets(x); canvas_resortoutlets(x); ! if (fvis) { ! canvas_vis(x, 1); ! gobj_subscribe(x,manager); ! // gobj_changed(x,0); ! canvas_redraw(x); ! } }
--- 789,801 ---- canvas_resortinlets(x); canvas_resortoutlets(x); ! if (fvis) canvas_vis(x, 1); ! } ! /* called by m_class.c */ ! extern "C" void canvas_popabstraction(t_canvas *x) { ! pd_set_newest(x); ! pd_popsym(x); ! x->loading = 0; ! canvas_resortinlets(x); ! canvas_resortoutlets(x); }
*************** *** 849,861 **** void pd_set_newest (t_pd *x) {newest = x;}
- /* called by m_class.c */ - extern "C" void canvas_popabstraction(t_canvas *x) { - pd_set_newest(x); - pd_popsym(x); - x->loading = 0; - canvas_resortinlets(x); - canvas_resortoutlets(x); - } - static void *subcanvas_new(t_symbol *s) { t_atom a[6]; --- 867,870 ---- *************** *** 5721,5726 **** static t_class *gatom_class;
- void pd_upload(t_gobj *self); - void canvas_text(t_canvas *gl, t_symbol *s, int argc, t_atom *argv) { t_text *x = (t_text *)pd_new(text_class); --- 5730,5733 ----