void iemgui_receive(t_iemgui *x, t_symbol *s) { t_symbol *rcv; if (s == &s_) s = s_empty; //tb: fix for empty label int oldsndrcvable=0; if(iemgui_has_rcv(x)) oldsndrcvable += IEM_GUI_OLD_RCV_FLAG; if(iemgui_has_snd(x)) oldsndrcvable += IEM_GUI_OLD_SND_FLAG; rcv = iemgui_raute2dollar(s); x->x_rcv_unexpanded = rcv; rcv = canvas_realizedollar(x->x_glist, rcv); if(s!=s_empty) { if(rcv!=x->x_rcv) { if(iemgui_has_rcv(x)) pd_unbind((t_pd *)x, x->x_rcv); x->x_rcv = rcv; pd_bind((t_pd *)x, x->x_rcv); } } else if(s==s_empty && iemgui_has_rcv(x)) { pd_unbind((t_pd *)x, x->x_rcv); x->x_rcv = rcv; } iemgui_verify_snd_ne_rcv(x); iemgui_draw_io(x, oldsndrcvable); }
void grab_setup(void) { t_symbol *s = gensym("grab"); grab_class = class_new(s, (t_newmethod)grab_new, (t_method)grab_free, sizeof(t_grab), 0, A_DEFFLOAT, A_DEFSYMBOL, 0); class_addfloat(grab_class, grab_float); class_addbang(grab_class, grab_bang); class_addsymbol(grab_class, grab_symbol); class_addpointer(grab_class, grab_pointer); class_addlist(grab_class, grab_list); class_addanything(grab_class, grab_anything); class_addmethod(grab_class, (t_method)grab_set, gensym("set"), A_SYMBOL, 0); if (!bindlist_class) { t_class *c = grab_class; pd_bind(&grab_class, s); pd_bind(&c, s); if (!s->s_thing || !(bindlist_class = *s->s_thing) || bindlist_class->c_name != gensym("bindlist")) error("grab: failure to initialize remote grabbing feature"); pd_unbind(&c, s); pd_unbind(&grab_class, s); } }
void hammerfile_free(t_hammerfile *f) { t_hammerfile *prev, *next; hammereditor_close(f, 0); if (f->f_embedfn) /* just in case of missing 'restore' */ hammerembed_gc(f->f_master, ps__C, 0); if (f->f_savepanel) { pd_unbind((t_pd *)f->f_savepanel, f->f_savepanel->f_bindname); pd_free((t_pd *)f->f_savepanel); } if (f->f_bindname) pd_unbind((t_pd *)f, f->f_bindname); if (f->f_panelclock) clock_free(f->f_panelclock); if (f->f_editorclock) clock_free(f->f_editorclock); for (prev = 0, next = hammerfile_proxies; next; prev = next, next = next->f_next) if (next == f) break; if (prev) prev->f_next = f->f_next; else if (f == hammerfile_proxies) hammerfile_proxies = f->f_next; pd_free((t_pd *)f); }
/* cleanup routine; delete any resources we have */ static void guiconnect_free(t_guiconnect *x) { if (x->x_sym) pd_unbind(&x->x_obj.ob_pd, x->x_sym); if (x->x_clock) clock_free(x->x_clock); }
static void hammerembed_gc(t_pd *x, t_symbol *s, int expected) { t_pd *garbage; int count = 0; while (garbage = pd_findbyclass(s, *x)) pd_unbind(garbage, s), count++; if (count != expected) bug("hammerembed_gc (%d garbage bindings)", count); }
static void image_free(t_image *x) { sys_vgui("image delete img%x\n", x); if (x->x_receive) { pd_unbind(&x->x_obj.ob_pd,x->x_receive); } //sys_vgui(".x%lx.c delete %xSEL\n", x); //sys_vgui(".x%lx.c delete %xS\n", x); }
void number_release(t_symbol *s) { t_number *num = (t_number *)pd_findbyclass(s,number_class); if (num) { if (!--num->o_refcount) { pd_unbind(&num->o_pd, s); pd_free(&num->o_pd); } } else bug("value_release"); }
/* the GUI calls this when it disappears. (If there's any chance the GUI will fail to do this, the "target", when it signs off, should specify a timeout after which the guiconnect will disappear.) */ static void guiconnect_signoff(t_guiconnect *x) { if (!x->x_who) pd_free(&x->x_obj.ob_pd); else { pd_unbind(&x->x_obj.ob_pd, x->x_sym); x->x_sym = 0; } }
static void draw_select(t_tg* tg,t_glist* glist) { t_canvas *canvas = glist_getcanvas(glist); if(tg->selected) { pd_bind(&tg->x_obj.ob_pd, tg->name); sys_vgui(".x%lx.c itemconfigure %lxTGLBOUND -outline #0000FF\n", canvas, tg); } else { pd_unbind(&tg->x_obj.ob_pd, tg->name); sys_vgui(".x%lx.c itemconfigure %lxTGLBOUND -outline #000000\n", canvas, tg); } }
///////////////////////////////////////////////////////// // Destructor // ///////////////////////////////////////////////////////// GemBase :: ~GemBase(void) { if (gem_amRendering) { stopRendering(); gem_amRendering=false; } if (m_out1) { outlet_free(m_out1); } pd_unbind(&this->x_obj->ob_pd, gensym("__gemBase")); }
static void scope_free(t_scope *x) { if (x->x_clock) clock_free(x->x_clock); if (x->x_xbuffer != x->x_xbufini) freebytes(x->x_xbuffer, x->x_allocsize * sizeof(*x->x_xbuffer)); if (x->x_ybuffer != x->x_ybufini) freebytes(x->x_ybuffer, x->x_allocsize * sizeof(*x->x_ybuffer)); if (x->x_handle) { pd_unbind(x->x_handle, ((t_scopehandle *)x->x_handle)->h_bindsym); pd_free(x->x_handle); } }
/* release a variable. This only frees the "vcommon" resource when the last interested party releases it. */ void value_release(t_symbol *s) { t_vcommon *c = (t_vcommon *)pd_findbyclass(s, vcommon_class); if (c) { if (!--c->c_refcount) { pd_unbind(&c->c_pd, s); pd_free(&c->c_pd); } } else bug("value_release"); }
static void paramClass_free(t_paramClass *x) { if(x->inlet2) pd_free((t_pd *)x->inlet2); if (x->receive) pd_unbind(&x->x_obj.ob_pd, x->receive); if (x->param) param_unregister(x->param); freebytes(x->gav, x->gac * sizeof(*(x->gav))); freebytes(x->av, x->alloc * sizeof(*(x->av))); }
int iemgui_dialog(t_iemgui *x, int argc, t_atom *argv) { t_symbol *srl[3]; x->x_loadinit = !!atom_getintarg(5, argc, argv); srl[0] = iemgui_getfloatsymarg(7,argc,argv); srl[1] = iemgui_getfloatsymarg(8,argc,argv); srl[2] = iemgui_getfloatsymarg(9,argc,argv); x->x_ldx = atom_getintarg(10, argc, argv); x->x_ldy = atom_getintarg(11, argc, argv); int f = atom_getintarg(12, argc, argv); x->x_fontsize = maxi(atom_getintarg(13, argc, argv),4); x->x_bcol = atom_getintarg(14, argc, argv) & 0xffffff; x->x_fcol = atom_getintarg(15, argc, argv) & 0xffffff; x->x_lcol = atom_getintarg(16, argc, argv) & 0xffffff; int oldsndrcvable=0; if(iemgui_has_rcv(x)) oldsndrcvable |= IEM_GUI_OLD_RCV_FLAG; if(iemgui_has_snd(x)) oldsndrcvable |= IEM_GUI_OLD_SND_FLAG; iemgui_all_raute2dollar(srl); // replace ascii code 11 (\v or vertical tab) with spaces // we do this so that the string with spaces can survive argc,argv // conversion when coming from dialog side of things where it is parsed char *c; for(c = srl[2]->s_name; c != NULL && *c != '\0'; c++) { if(*c == '\v') { *c = ' '; } } x->x_snd_unexpanded=srl[0]; srl[0]=canvas_realizedollar(x->x_glist, srl[0]); x->x_rcv_unexpanded=srl[1]; srl[1]=canvas_realizedollar(x->x_glist, srl[1]); x->x_lab_unexpanded=srl[2]; srl[2]=canvas_realizedollar(x->x_glist, srl[2]); if(srl[1]!=x->x_rcv) { if(iemgui_has_rcv(x)) pd_unbind((t_pd *)x, x->x_rcv); x->x_rcv = srl[1]; pd_bind((t_pd *)x, x->x_rcv); } x->x_snd = srl[0]; x->x_lab = srl[2]; if(f<0 || f>2) f=0; x->x_font_style = f; iemgui_verify_snd_ne_rcv(x); canvas_dirty(x->x_glist, 1); return oldsndrcvable; }
static void multireceive_clear(t_multireceive *x) { t_symlist*sl=x->x_symlist; t_symlist*current=NULL; while(sl) { current=sl; sl=sl->next; pd_unbind(&x->x_proxy->x_obj.ob_pd, current->s); current->s=NULL; current->next=NULL; freebytes(current, sizeof(t_symlist)); } x->x_symlist=NULL; }
void eobj_free(void *x) { t_eobj* z = (t_eobj *)x; if(z->o_id) { pd_unbind((t_pd *)x, z->o_id); z->o_id = NULL; } if(z->o_proxy && z->o_nproxy) { free(z->o_proxy); z->o_proxy = NULL; z->o_nproxy= 0; } }
static void grid_draw_select(t_grid* x,t_glist* glist) { t_canvas *canvas=glist_getcanvas(glist); if(x->x_selected) { pd_bind(&x->x_obj.ob_pd, x->x_name); /* sets the item in blue */ GRID_SYS_VGUI3(".x%lx.c itemconfigure %lxGRID -outline #0000FF\n", canvas, x); } else { pd_unbind(&x->x_obj.ob_pd, x->x_name); GRID_SYS_VGUI3(".x%lx.c itemconfigure %lxGRID -outline #000000\n", canvas, x); } }
void gemreceive::unbind(gemreceive*x, t_symbol*key) { t_gemreceive_proxy*list=0, *last=0; t_bind_element*elements=0, *lastlmn=0; debug_post("trying to unbind 0x%X:: '%s' from %x", x, key->s_name, proxy_list); for(list=proxy_list; list && list->key!=key; list=list->next){ last=list; } if(!list)return; for(elements=list->elements; elements && elements->object != x; elements=elements->next) { lastlmn=elements; } if(elements) { /* found it, now remove it */ if(lastlmn) { lastlmn->next=elements->next; } else { list->elements=elements->next; } elements->object=0; elements->priority=0; elements->next=0; freebytes(elements, sizeof(elements)); } else { // not here... } if(0==list->elements) { // should we unbind ?? if(last) { last->next=list->next; } else { proxy_list=list->next; } pd_unbind(&list->p_obj.ob_pd, list->key); list->next=0; list->key=0; pd_free(&list->p_obj.ob_pd); } }
static void polytouchin_free(t_polytouchin *x) { pd_unbind(&x->x_obj.ob_pd, pd_this->pd_polytouchin_sym); }
static void bendin_free(t_bendin *x) { pd_unbind(&x->x_obj.ob_pd, pd_this->pd_bendin_sym); }
static void ctlin_free(t_ctlin *x) { pd_unbind(&x->x_obj.ob_pd, pd_this->pd_ctlin_sym); }
static void notein_free(t_notein *x) { pd_unbind(&x->x_obj.ob_pd, pd_this->pd_notein_sym); }
static void liaKD_free(t_liaKD *x) { pd_unbind(&x->x_obj.ob_pd, x->x_sym); }
static void receive_free(t_receive *x) { pd_unbind(&x->x_obj.ob_pd, x->x_sym); }
static void sigdelwrite_free(t_sigdelwrite *x) { pd_unbind(&x->x_obj.ob_pd, x->x_sym); freebytes(x->x_cspace.c_vec, (x->x_cspace.c_n + XTRASAMPS) * sizeof(float)); }
static void midiclkin_free(t_midiclkin *x) { pd_unbind(&x->x_obj.ob_pd, midiclkin_sym); }
static void touchin_free(t_touchin *x) { pd_unbind(&x->x_obj.ob_pd, touchin_sym); }
static void sysexin_free(t_midiin *x) { pd_unbind(&x->x_obj.ob_pd, pd_this->pd_sysexin_sym); }
static void midirealtimein_free(t_midirealtimein *x) { pd_unbind(&x->x_obj.ob_pd, pd_this->pd_midirealtimein_sym); }
static void pgmin_free(t_pgmin *x) { pd_unbind(&x->x_obj.ob_pd, pgmin_sym); }