Update of /cvsroot/pure-data/pd/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17649
Modified Files: Tag: devel_0_39 objective.tcl desire.c desire.tk Log Message: added client-side manager. bugfixes.
Index: desire.tk =================================================================== RCS file: /cvsroot/pure-data/pd/src/Attic/desire.tk,v retrieving revision 1.1.2.87 retrieving revision 1.1.2.88 diff -C2 -d -r1.1.2.87 -r1.1.2.88 *** desire.tk 29 Oct 2005 18:00:50 -0000 1.1.2.87 --- desire.tk 31 Oct 2005 11:13:58 -0000 1.1.2.88 *************** *** 70,74 **** set poolset(foo) bar array unset poolset foo ! set poolqueue {}
#-----------------------------------------------------------------------------------# --- 70,102 ---- set poolset(foo) bar array unset poolset foo ! ! class_new manager {thing} ! ! def manager init {} { ! set @q [list] ! $self call ! } ! ! def manager call {} { ! global poolset ! if {![llength $@q]} return ! post "client queue %d" [llength $@q] ! foreach o $@q { ! puts "$o: $poolset($o)" ! unset poolset($origin) ! } ! set @q [list] ! after 500 "$self call" ! } ! ! def manager notice {origin args} { ! global poolset ! if {[info exists poolset($origin)]} { ! # nothing for now ! } { ! set poolset($origin) {-1} ! lappend poolset $origin ! } ! }
#-----------------------------------------------------------------------------------# *************** *** 662,666 ****
class_new canvas {view} ! def* canvas init {width height geometry editable} { super global pd_opendir pd_tearoff OS cmdline canvasmenu focus --- 690,694 ----
class_new canvas {view} ! def* canvas init {{width 300} {height 400} {geometry 400x300+0+0} {editable 0}} { super global pd_opendir pd_tearoff OS cmdline canvasmenu focus *************** *** 706,709 **** --- 734,740 ---- }
+ def* canvas ninlets= {n} {} + def* canvas noutlets= {n} {} + #-----------------------------------------------------------------------------------#
*************** *** 1179,1184 **** --- 1210,1226 ---- #def* canvas del {i} {lset @children $i ""}
+ proc lwithout {a b} { + set r {} + foreach x $b {set c($x) {}} + foreach x $a {if {![info exists c($x)]} {lappend r $x}} + return $r + } + def* canvas children= {children} { # think of the children!!! + set born [lwithout $children $@children]; post %s "BORN: $born" + set dead [lwithout $@children $children]; post %s "BORN: $dead" + foreach x $born {} + foreach x $dead {} set @children $children } *************** *** 1194,1198 **** }
- def canvas delete_selection {} { foreach obj $@selection {$obj erase} --- 1236,1239 ---- *************** *** 2984,2985 **** --- 3025,3029 ---- #c that thing..redraws anythign that is currently selected or was currently selected #c lsort proably does what u want (has an integer flag too) + + + set manager [manager_new]
Index: objective.tcl =================================================================== RCS file: /cvsroot/pure-data/pd/src/Attic/objective.tcl,v retrieving revision 1.1.2.1 retrieving revision 1.1.2.2 diff -C2 -d -r1.1.2.1 -r1.1.2.2 *** objective.tcl 13 Oct 2005 07:03:25 -0000 1.1.2.1 --- objective.tcl 31 Oct 2005 11:13:58 -0000 1.1.2.2 *************** *** 36,40 **** proc proc* {name args body} { set argl {} ! foreach arg $args {lappend argl "$arg=$$arg"} proc $name $args "puts "CALL TO PROC $name [join $argl " "]"; $body" } --- 36,40 ---- proc proc* {name args body} { set argl {} ! foreach arg $args {set arg [lindex $arg 0]; lappend argl "$arg=$$arg"} proc $name $args "puts "CALL TO PROC $name [join $argl " "]"; $body" } *************** *** 66,70 **** global _ set self [lindex $args 0] ! if {"$self" == ""} {error "null pointer you black emperor"} set selector [lindex $args 1] if {[llength [array names _ $self:_class]] == 0} { --- 66,70 ---- global _ set self [lindex $args 0] ! if {"$self" == ""} {error "null pointer error"} set selector [lindex $args 1] if {[llength [array names _ $self:_class]] == 0} { *************** *** 75,78 **** --- 75,79 ---- lookup_method $_($self:_class) $selector methods ancestors set i 0 + # puts "FOUND METHODS: $methods" if {![llength $methods]} { error "no such method '$selector' for object '$self'\nwith ancestors {$ancestors}" *************** *** 93,96 **** --- 94,99 ---- class_new thing set _(thing:_super) {} + def* thing init {} {} + # virtual destructor def* thing _delete {} {}
Index: desire.c =================================================================== RCS file: /cvsroot/pure-data/pd/src/Attic/desire.c,v retrieving revision 1.1.2.45 retrieving revision 1.1.2.46 diff -C2 -d -r1.1.2.45 -r1.1.2.46 *** desire.c 29 Oct 2005 17:28:11 -0000 1.1.2.45 --- desire.c 31 Oct 2005 11:13:58 -0000 1.1.2.46 *************** *** 44,48 **** 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; --- 44,47 ---- *************** *** 117,121 ****
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; --- 116,119 ---- *************** *** 154,161 **** void manager_call (void *foo) { t_manager *self = (t_manager *)foo; - LS while (!queue_empty(self->q)) { t_gobj *o = (t_gobj *)queue_get(self->q); if (!o->g_adix->dirtyc) continue; pd_upload(o); o->g_adix->dirtyc = 0; --- 152,159 ---- void manager_call (void *foo) { t_manager *self = (t_manager *)foo; while (!queue_empty(self->q)) { t_gobj *o = (t_gobj *)queue_get(self->q); if (!o->g_adix->dirtyc) continue; + post("UPLOADING a %s",o->g_pd->c_name->s_name); pd_upload(o); o->g_adix->dirtyc = 0; *************** *** 166,174 **** void manager_notice (t_gobj *self_, t_gobj *origin, int argc, t_atom *argv) { t_manager *self = (t_manager *)self_; ! LS 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 */ --- 164,174 ---- void manager_notice (t_gobj *self_, t_gobj *origin, int argc, t_atom *argv) { t_manager *self = (t_manager *)self_; ! post("manager_notice(%p,%p,%d,...)",self,origin,argc); t_appendix *a = (t_appendix *)origin->g_adix; if (!a->dirtyc) { queue_put(self->q,origin); a->dirtyc = 1; + } else { + post("double dirty"); } SETFLOAT(a->dirtyv,-1); /* in the future this may contain real data instead */ *************** *** 177,181 **** t_manager *manager_new (t_symbol *s, int argc, t_atom *argv) { t_manager *self = (t_manager *)pd_new(manager_class); - LS self->super.g_adix = appendix_new((t_gobj *)self); self->q = queue_new(); --- 177,180 ---- *************** *** 186,190 ****
void manager_free (t_manager *self) { - LS clock_free(self->clock); queue_free(self->q); --- 185,188 ---- *************** *** 272,283 ****
/* add a glist the list of "root" canvases (toplevels without parents.) */ ! static void canvas_addtolist(t_canvas *x) ! { 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); }
--- 270,281 ----
/* add a glist the list of "root" canvases (toplevels without parents.) */ ! static void canvas_addtolist(t_canvas *x) { x->gl_next = canvas_list; canvas_list = x; ! if (x->gl_havewindow || x->gl_willvis) { ! post("subscribe %lx",(long)x); ! gobj_subscribe((t_gobj *)x,(t_gobj *)manager); ! gobj_changed(x,""); ! } }
*************** *** 1672,1683 **** /* get the index of a gobj in a glist. If y is zero, return the total number of objects. */ ! int glist_getindex(t_glist *x, t_gobj *y) ! { t_gobj *y2; ! int indx; ! ! for (y2 = x->gl_list, indx = 0; y2 && y2 != y; y2 = y2->g_next) ! indx++; ! return (indx); }
--- 1670,1678 ---- /* get the index of a gobj in a glist. If y is zero, return the total number of objects. */ ! int glist_getindex(t_glist *x, t_gobj *y) { t_gobj *y2; ! int i=0; ! glist_each(y2,x) {if (y2==y) break; else i++;} ! return i; }
*************** *** 5317,5321 **** } gobj_changed(x,""); - // sys_mgui(x,"add","p",y); /* voodoo */ /* if (x->gl_editor && (ob = pd_checkobject(&y->g_pd))) rtext_new(x, ob); */ --- 5312,5315 ---- *************** *** 12083,12092 **** } static void text_select(t_gobj *z, t_glist *glist, int state) { ! sys_mgui(z,"wb_select","i",state); // rtext_select(y, state); //??? } static void text_activate(t_gobj *z, t_glist *glist, int state) { ! sys_mgui(z,"wb_activate","i",state); ! // what is this function supposed to be for anyway? } static void text_delete(t_gobj *z, t_glist *glist) {sys_mgui(z,"wb_delete","");} --- 12077,12086 ---- } static void text_select(t_gobj *z, t_glist *glist, int state) { ! // sys_mgui(z,"wb_select","i",state); // rtext_select(y, state); //??? } static void text_activate(t_gobj *z, t_glist *glist, int state) { ! // sys_mgui(z,"wb_activate","i",state); ! // what is this function supposed to be for anyway? } static void text_delete(t_gobj *z, t_glist *glist) {sys_mgui(z,"wb_delete","");}