diff options
Diffstat (limited to 'pd/src')
-rwxr-xr-x | pd/src/configure | 4 | ||||
-rw-r--r-- | pd/src/configure.in | 4 | ||||
-rw-r--r-- | pd/src/g_all_guis.c | 53 | ||||
-rw-r--r-- | pd/src/g_all_guis.h | 2 | ||||
-rw-r--r-- | pd/src/g_array.c | 10 | ||||
-rw-r--r-- | pd/src/g_canvas.c | 13 | ||||
-rw-r--r-- | pd/src/g_canvas.h | 4 | ||||
-rw-r--r-- | pd/src/g_editor.c | 10 | ||||
-rw-r--r-- | pd/src/g_hdial.c | 46 | ||||
-rw-r--r-- | pd/src/g_numbox.c | 4 | ||||
-rw-r--r-- | pd/src/g_text.c | 65 | ||||
-rw-r--r-- | pd/src/g_vdial.c | 2 | ||||
-rw-r--r-- | pd/src/m_binbuf.c | 7 | ||||
-rw-r--r-- | pd/src/m_pd.h | 4 | ||||
-rw-r--r-- | pd/src/makefile.nt | 10 | ||||
-rw-r--r-- | pd/src/notes.txt | 19 | ||||
-rw-r--r-- | pd/src/s_inter.c | 14 | ||||
-rw-r--r-- | pd/src/s_mac.c | 2 | ||||
-rw-r--r-- | pd/src/s_main.c | 13 | ||||
-rw-r--r-- | pd/src/t_tkcmd.c | 41 | ||||
-rw-r--r-- | pd/src/u_main.tk | 82 | ||||
-rw-r--r-- | pd/src/u_pdreceive.c | 42 | ||||
-rw-r--r-- | pd/src/u_pdsend.c | 19 | ||||
-rw-r--r-- | pd/src/z.pd | 40 | ||||
-rw-r--r-- | pd/src/z2.pd | 28 | ||||
-rw-r--r-- | pd/src/z3.pd | 29 |
26 files changed, 315 insertions, 252 deletions
diff --git a/pd/src/configure b/pd/src/configure index 9205ddb3..aa179b0c 100755 --- a/pd/src/configure +++ b/pd/src/configure @@ -3121,7 +3121,9 @@ fi if test `uname -s` = Darwin; then - LDFLAGS="-Wl -framework Tcl -framework Tk -framework CoreAudio -framework Carbon -framework CoreMIDI" + LDFLAGS="-Wl -framework Tcl -framework Tk -framework CoreAudio \ + -framework AudioUnit -framework AudioToolbox \ + -framework Carbon -framework CoreMIDI" EXT=pd_darwin MORECFLAGS="-DMACOSX -I/usr/X11R6/include -I../portaudio/pa_common \ -I../portaudio/pablio -I../portaudio/portmidi-macosx -Wno-error" diff --git a/pd/src/configure.in b/pd/src/configure.in index edc2250c..da70b29e 100644 --- a/pd/src/configure.in +++ b/pd/src/configure.in @@ -169,7 +169,9 @@ fi if test `uname -s` = Darwin; then - LDFLAGS="-Wl -framework Tcl -framework Tk -framework CoreAudio -framework Carbon -framework CoreMIDI" + LDFLAGS="-Wl -framework Tcl -framework Tk -framework CoreAudio \ + -framework AudioUnit -framework AudioToolbox \ + -framework Carbon -framework CoreMIDI" EXT=pd_darwin MORECFLAGS="-DMACOSX -I/usr/X11R6/include -I../portaudio/pa_common \ -I../portaudio/pablio -I../portaudio/portmidi-macosx -Wno-error" diff --git a/pd/src/g_all_guis.c b/pd/src/g_all_guis.c index db562404..2cd4994a 100644 --- a/pd/src/g_all_guis.c +++ b/pd/src/g_all_guis.c @@ -147,16 +147,30 @@ int iemgui_modulo_color(int col) return(col); } -void iemgui_raute2dollar(t_symbol *s) +t_symbol *iemgui_raute2dollar(t_symbol *s) { - if(s->s_name[0] == '#') - s->s_name[0] = '$'; + if (s->s_name[0] == '#') + { + char buf[MAXPDSTRING]; + strncpy(buf, s->s_name, MAXPDSTRING); + buf[MAXPDSTRING-1] = 0; + buf[0] = '$'; + return (gensym(buf)); + } + else return (s); } -void iemgui_dollar2raute(t_symbol *s) +t_symbol *iemgui_dollar2raute(t_symbol *s) { - if(s->s_name[0] == '$') - s->s_name[0] = '#'; + if (s->s_name[0] == '$') + { + char buf[MAXPDSTRING]; + strncpy(buf, s->s_name, MAXPDSTRING); + buf[MAXPDSTRING-1] = 0; + buf[0] = '#'; + return (gensym(buf)); + } + else return (s); } t_symbol *iemgui_unique2dollarzero(t_symbol *s, int unique_num, int and_unique_flag) @@ -504,22 +518,16 @@ int iemgui_compatible_col(int i) void iemgui_all_dollar2raute(t_symbol **srlsym) { - if(srlsym[0]->s_name[0] == '$') - srlsym[0]->s_name[0] = '#'; - if(srlsym[1]->s_name[0] == '$') - srlsym[1]->s_name[0] = '#'; - if(srlsym[2]->s_name[0] == '$') - srlsym[2]->s_name[0] = '#'; + srlsym[0] = iemgui_dollar2raute(srlsym[0]); + srlsym[1] = iemgui_dollar2raute(srlsym[1]); + srlsym[2] = iemgui_dollar2raute(srlsym[2]); } void iemgui_all_raute2dollar(t_symbol **srlsym) { - if(srlsym[0]->s_name[0] == '#') - srlsym[0]->s_name[0] = '$'; - if(srlsym[1]->s_name[0] == '#') - srlsym[1]->s_name[0] = '$'; - if(srlsym[2]->s_name[0] == '#') - srlsym[2]->s_name[0] = '$'; + srlsym[0] = iemgui_raute2dollar(srlsym[0]); + srlsym[1] = iemgui_raute2dollar(srlsym[1]); + srlsym[2] = iemgui_raute2dollar(srlsym[2]); } void iemgui_send(void *x, t_iemgui *iemgui, t_symbol *s) @@ -534,9 +542,8 @@ void iemgui_send(void *x, t_iemgui *iemgui, t_symbol *s) oldsndrcvable += IEM_GUI_OLD_SND_FLAG; if(!strcmp(s->s_name, "empty")) sndable = 0; - iemgui_raute2dollar(s); iemgui_fetch_unique(iemgui); - snd = s; + snd = iemgui_raute2dollar(s); if(iemgui_is_dollarzero(snd)) { iemgui->x_fsf.x_snd_is_unique = 1; @@ -577,8 +584,7 @@ void iemgui_receive(void *x, t_iemgui *iemgui, t_symbol *s) oldsndrcvable += IEM_GUI_OLD_SND_FLAG; if(!strcmp(s->s_name, "empty")) rcvable = 0; - iemgui_raute2dollar(s); - rcv = s; + rcv = iemgui_raute2dollar(s); iemgui_fetch_unique(iemgui); if(iemgui_is_dollarzero(rcv)) { @@ -628,8 +634,7 @@ void iemgui_label(void *x, t_iemgui *iemgui, t_symbol *s) int pargc, tail_len, nth_arg; t_atom *pargv; - iemgui_raute2dollar(s); - lab = s; + lab = iemgui_raute2dollar(s); iemgui_fetch_unique(iemgui); if(iemgui_is_dollarzero(lab)) diff --git a/pd/src/g_all_guis.h b/pd/src/g_all_guis.h index ec9d4e69..5fab095d 100644 --- a/pd/src/g_all_guis.h +++ b/pd/src/g_all_guis.h @@ -277,8 +277,6 @@ extern char *iemgui_vu_scale_str[]; EXTERN int iemgui_clip_size(int size); EXTERN int iemgui_clip_font(int size); EXTERN int iemgui_modulo_color(int col); -EXTERN void iemgui_raute2dollar(t_symbol *s); -EXTERN void iemgui_dollar2raute(t_symbol *s); EXTERN t_symbol *iemgui_unique2dollarzero(t_symbol *s, int unique_num, int and_unique_flag); EXTERN t_symbol *iemgui_sym2dollararg(t_symbol *s, int nth_arg, int tail_len); EXTERN t_symbol *iemgui_dollarzero2unique(t_symbol *s, int unique_num); diff --git a/pd/src/g_array.c b/pd/src/g_array.c index 2cdb3d8e..7a9fb3f7 100644 --- a/pd/src/g_array.c +++ b/pd/src/g_array.c @@ -336,7 +336,7 @@ static void array_motion(void *z, t_floatarg dx, t_floatarg dy) { if (i == 0) { - float newy = ywas + dy; + float newy = ywas + dy * array_motion_yperpix; if (newy < 0) newy = 0; template_setfloat(array_motion_template, @@ -346,7 +346,8 @@ static void array_motion(void *z, t_floatarg dx, t_floatarg dy) else { template_setfloat(array_motion_template, - array_motion_yfield, thisword, ywas + dy, 1); + array_motion_yfield, thisword, + ywas + dy * array_motion_yperpix, 1); } } } @@ -488,9 +489,8 @@ int array_doclick(t_array *array, t_glist *glist, t_gobj *gobj, elem = (char *)array->a_vec; memmove(elem + elemsize * (i+1), elem + elemsize * i, - (array->a_n - i) * elemsize); + (array->a_n - i - 1) * elemsize); i++; - (array->a_n)++; } if (xonset >= 0) { @@ -516,7 +516,7 @@ int array_doclick(t_array *array, t_glist *glist, t_gobj *gobj, array_motion_yfield = gensym("w"); array_motion_ycumulative = *(float *)((elem + elemsize * i) + wonset); - array_motion_xperpix *= array_motion_fatten; + array_motion_yperpix *= array_motion_fatten; } else if (yonset >= 0) { diff --git a/pd/src/g_canvas.c b/pd/src/g_canvas.c index 8bad09a9..1eba8ac5 100644 --- a/pd/src/g_canvas.c +++ b/pd/src/g_canvas.c @@ -38,7 +38,7 @@ struct _canvasenvironment #define GLIST_DEFCANVASHEIGHT 300 #ifdef MACOSX -#define GLIST_DEFCANVASYLOC 20 +#define GLIST_DEFCANVASYLOC 22 #else #define GLIST_DEFCANVASYLOC 0 #endif @@ -186,8 +186,6 @@ void canvas_getargs(int *argcp, t_atom **argvp) *argvp = e->ce_argv; } -t_symbol *realizedollsym(t_symbol *s, int ac, t_atom *av, int tonew); - t_symbol *canvas_realizedollar(t_canvas *x, t_symbol *s) { t_symbol *ret; @@ -196,7 +194,8 @@ t_symbol *canvas_realizedollar(t_canvas *x, t_symbol *s) { t_canvasenvironment *env = canvas_getenv(x); canvas_setcurrent(x); - ret = realizedollsym(gensym(name+1), env->ce_argc, env->ce_argv, 1); + ret = binbuf_realizedollsym(gensym(name+1), + env->ce_argc, env->ce_argv, 1); canvas_unsetcurrent(x); } else ret = s; @@ -397,6 +396,10 @@ t_canvas *canvas_new(void *dummy, t_symbol *sel, int argc, t_atom *argv) } else x->gl_env = 0; + if (yloc < GLIST_DEFCANVASYLOC) + yloc = GLIST_DEFCANVASYLOC; + if (xloc < 0) + xloc = 0; x->gl_x1 = 0; x->gl_y1 = 0; x->gl_x2 = 1; @@ -957,7 +960,7 @@ void canvas_restore(t_canvas *x, t_symbol *s, int argc, t_atom *argv) if (ap->a_type == A_DOLLSYM) { t_canvasenvironment *e = canvas_getenv(canvas_getcurrent()); - canvas_rename(x, realizedollsym(ap->a_w.w_symbol, + canvas_rename(x, binbuf_realizedollsym(ap->a_w.w_symbol, e->ce_argc, e->ce_argv, 1), 0); } else if (ap->a_type == A_SYMBOL) diff --git a/pd/src/g_canvas.h b/pd/src/g_canvas.h index 5348f25f..e4eecfc0 100644 --- a/pd/src/g_canvas.h +++ b/pd/src/g_canvas.h @@ -577,3 +577,7 @@ EXTERN void template_setsymbol(t_template *x, t_symbol *fieldname, /* ----------------------- guiconnects, g_guiconnect.c --------- */ EXTERN t_guiconnect *guiconnect_new(t_pd *who, t_symbol *sym); EXTERN void guiconnect_notarget(t_guiconnect *x, double timedelay); + +/* ------------- IEMGUI routines used in other g_ files ---------------- */ +EXTERN t_symbol *iemgui_raute2dollar(t_symbol *s); +EXTERN t_symbol *iemgui_dollar2raute(t_symbol *s); diff --git a/pd/src/g_editor.c b/pd/src/g_editor.c index 101c655a..470030e9 100644 --- a/pd/src/g_editor.c +++ b/pd/src/g_editor.c @@ -494,6 +494,7 @@ static void canvas_undo_cut(t_canvas *x, void *z, int action) else if (mode == UCUT_TEXT) { t_gobj *y1, *y2; + glist_noselect(x); for (y1 = x->gl_list; y2 = y1->g_next; y1 = y2) ; if (y1) @@ -1113,6 +1114,8 @@ void canvas_doclick(t_canvas *x, int xpos, int ypos, int which, if (!shiftmod) glist_noselect(x); sys_vgui(".x%x.c create rectangle %d %d %d %d -tags x\n", x, xpos, ypos, xpos, ypos); + x->gl_editor->e_xwas = xpos; + x->gl_editor->e_ywas = ypos; x->gl_editor->e_onmotion = MA_REGION; } } @@ -1354,7 +1357,7 @@ void canvas_key(t_canvas *x, t_symbol *s, int ac, t_atom *av) } if (keynumsym->s_thing && down) pd_float(keynumsym->s_thing, keynum); - if (keyupsym->s_thing && down) + if (keyupsym->s_thing && !down) pd_float(keyupsym->s_thing, keynum); if (keynamesym->s_thing) { @@ -1967,8 +1970,9 @@ static void canvas_connect(t_canvas *x, t_floatarg fwhoout, t_floatarg foutno, if (!(oc = obj_connect(objsrc, outno, objsink, inno))) goto bad; if (glist_isvisible(x)) { - sys_vgui(".x%x.c create line %d %d %d %d -tags l%x\n", - glist_getcanvas(x), 0, 0, 0, 0, oc); + sys_vgui(".x%x.c create line %d %d %d %d -width %d -tags l%x\n", + glist_getcanvas(x), 0, 0, 0, 0, + (canvas_issigoutlet(objsrc, outno) ? 2 : 1),oc); canvas_fixlinesfor(x, objsrc); } return; diff --git a/pd/src/g_hdial.c b/pd/src/g_hdial.c index caca3a22..9f0db2cc 100644 --- a/pd/src/g_hdial.c +++ b/pd/src/g_hdial.c @@ -244,7 +244,7 @@ static void hradio_save(t_gobj *z, t_binbuf *b) (t_int)text_xpix(&x->x_gui.x_obj, x->x_gui.x_glist), (t_int)text_ypix(&x->x_gui.x_obj, x->x_gui.x_glist), (pd_class(&x->x_gui.x_obj.ob_pd) == hradio_old_class ? - gensym("vdl") : gensym("vradio")), + gensym("hdl") : gensym("hradio")), x->x_gui.x_w, x->x_change, (*ip1)&IEM_INIT_ARGS_ALL, x->x_number, srl[0], srl[1], srl[2], @@ -657,7 +657,7 @@ static void hradio_ff(t_hradio *x) void g_hradio_setup(void) { - hradio_class = class_new(gensym("hdl"), (t_newmethod)hradio_new, + hradio_class = class_new(gensym("hradio"), (t_newmethod)hradio_new, (t_method)hradio_ff, sizeof(t_hradio), 0, A_GIMME, 0); class_addbang(hradio_class, hradio_bang); class_addfloat(hradio_class, hradio_float); @@ -714,43 +714,43 @@ void g_hradio_setup(void) class_addcreator((t_newmethod)hradio_new, gensym("radiobut"), A_GIMME, 0); class_addcreator((t_newmethod)hradio_new, gensym("radiobutton"), A_GIMME, 0); - class_addbang(hradio_class, hradio_bang); - class_addfloat(hradio_class, hradio_float); - class_addmethod(hradio_class, (t_method)hradio_click, gensym("click"), + class_addbang(hradio_old_class, hradio_bang); + class_addfloat(hradio_old_class, hradio_float); + class_addmethod(hradio_old_class, (t_method)hradio_click, gensym("click"), A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, 0); - class_addmethod(hradio_class, (t_method)hradio_dialog, gensym("dialog"), + class_addmethod(hradio_old_class, (t_method)hradio_dialog, gensym("dialog"), A_GIMME, 0); - class_addmethod(hradio_class, (t_method)hradio_loadbang, + class_addmethod(hradio_old_class, (t_method)hradio_loadbang, gensym("loadbang"), 0); - class_addmethod(hradio_class, (t_method)hradio_set, + class_addmethod(hradio_old_class, (t_method)hradio_set, gensym("set"), A_FLOAT, 0); - class_addmethod(hradio_class, (t_method)hradio_size, + class_addmethod(hradio_old_class, (t_method)hradio_size, gensym("size"), A_GIMME, 0); - class_addmethod(hradio_class, (t_method)hradio_delta, + class_addmethod(hradio_old_class, (t_method)hradio_delta, gensym("delta"), A_GIMME, 0); - class_addmethod(hradio_class, (t_method)hradio_pos, + class_addmethod(hradio_old_class, (t_method)hradio_pos, gensym("pos"), A_GIMME, 0); - class_addmethod(hradio_class, (t_method)hradio_color, + class_addmethod(hradio_old_class, (t_method)hradio_color, gensym("color"), A_GIMME, 0); - class_addmethod(hradio_class, (t_method)hradio_send, + class_addmethod(hradio_old_class, (t_method)hradio_send, gensym("send"), A_DEFSYM, 0); - class_addmethod(hradio_class, (t_method)hradio_receive, + class_addmethod(hradio_old_class, (t_method)hradio_receive, gensym("receive"), A_DEFSYM, 0); - class_addmethod(hradio_class, (t_method)hradio_label, + class_addmethod(hradio_old_class, (t_method)hradio_label, gensym("label"), A_DEFSYM, 0); - class_addmethod(hradio_class, (t_method)hradio_label_pos, + class_addmethod(hradio_old_class, (t_method)hradio_label_pos, gensym("label_pos"), A_GIMME, 0); - class_addmethod(hradio_class, (t_method)hradio_label_font, + class_addmethod(hradio_old_class, (t_method)hradio_label_font, gensym("label_font"), A_GIMME, 0); - class_addmethod(hradio_class, (t_method)hradio_init, + class_addmethod(hradio_old_class, (t_method)hradio_init, gensym("init"), A_FLOAT, 0); - class_addmethod(hradio_class, (t_method)hradio_number, + class_addmethod(hradio_old_class, (t_method)hradio_number, gensym("number"), A_FLOAT, 0); - class_addmethod(hradio_class, (t_method)hradio_single_change, + class_addmethod(hradio_old_class, (t_method)hradio_single_change, gensym("single_change"), 0); - class_addmethod(hradio_class, (t_method)hradio_double_change, + class_addmethod(hradio_old_class, (t_method)hradio_double_change, gensym("double_change"), 0); - class_setwidget(hradio_class, &hradio_widgetbehavior); - class_sethelpsymbol(hradio_class, gensym("hradio")); + class_setwidget(hradio_old_class, &hradio_widgetbehavior); + class_sethelpsymbol(hradio_old_class, gensym("hradio")); } diff --git a/pd/src/g_numbox.c b/pd/src/g_numbox.c index 092c2718..b8f962bc 100644 --- a/pd/src/g_numbox.c +++ b/pd/src/g_numbox.c @@ -318,8 +318,6 @@ static void my_numbox_draw_select(t_my_numbox *x, t_glist *glist) x->x_buf[0] = 0; (*x->x_gui.x_draw)(x, x->x_gui.x_glist, IEM_GUI_DRAW_MODE_UPDATE); } - glist_grab(x->x_gui.x_glist, &x->x_gui.x_obj.ob_g, - 0, my_numbox_key, 0, 0); sys_vgui(".x%x.c itemconfigure %xBASE1 -outline #%6.6x\n", canvas, x, IEM_GUI_COLOR_SELECTED); sys_vgui(".x%x.c itemconfigure %xBASE2 -fill #%6.6x\n", @@ -331,7 +329,6 @@ static void my_numbox_draw_select(t_my_numbox *x, t_glist *glist) } else { - glist_grab(x->x_gui.x_glist, 0, 0, 0, 0, 0); sys_vgui(".x%x.c itemconfigure %xBASE1 -outline #%6.6x\n", canvas, x, IEM_GUI_COLOR_NORMAL); sys_vgui(".x%x.c itemconfigure %xBASE2 -fill #%6.6x\n", @@ -533,6 +530,7 @@ static void my_numbox_motion(t_my_numbox *x, t_floatarg dx, t_floatarg dy) my_numbox_clip(x); (*x->x_gui.x_draw)(x, x->x_gui.x_glist, IEM_GUI_DRAW_MODE_UPDATE); my_numbox_bang(x); + clock_unset(x->x_clock_reset); } static void my_numbox_click(t_my_numbox *x, t_floatarg xpos, t_floatarg ypos, diff --git a/pd/src/g_text.c b/pd/src/g_text.c index d59afb3a..b502446b 100644 --- a/pd/src/g_text.c +++ b/pd/src/g_text.c @@ -65,7 +65,12 @@ void glist_text(t_glist *gl, t_symbol *s, int argc, t_atom *argv) glist_add(gl, &x->te_g); glist_noselect(gl); glist_select(gl, &x->te_g); - gobj_activate(&x->te_g, gl, 1); + /* it would be nice to "activate" here, but then the second, + "put-me-down" click changes the text selection, which is quite + irritating, so I took this back out. It's OK in messages + and objects though since there's no text in them at menu + creation. */ + /* gobj_activate(&x->te_g, gl, 1); */ canvas_startmotion(glist_getcanvas(gl)); } } @@ -410,8 +415,13 @@ typedef struct _gatom char a_buf[ATOMBUFSIZE];/* string buffer for typing */ char a_shift; /* was shift key down when dragging started? */ char a_wherelabel; /* 0-3 for left, right, above, below */ + t_symbol *a_expanded_to; /* a_symto after $0, $1, ... expansion */ } t_gatom; + /* prepend "-" as necessary to avoid empty strings, so we can + use them in Pd messages. A more complete solution would be + to introduce some quoting mechanism; but then we'd be much more + complicated. */ static t_symbol *gatom_escapit(t_symbol *s) { if (!*s->s_name) @@ -424,15 +434,24 @@ static t_symbol *gatom_escapit(t_symbol *s) shmo[99] = 0; return (gensym(shmo)); } - else return (s); + else return (iemgui_dollar2raute(s)); } + /* undo previous operation: strip leading "-" if found. */ static t_symbol *gatom_unescapit(t_symbol *s) { if (*s->s_name == '-') return (gensym(s->s_name+1)); - else return (s); + else return (iemgui_raute2dollar(s)); +} + +#if 0 /* ??? */ + /* expand leading $0, $1, etc. in the symbol */ +static t_symbol *gatom_realizedollar(t_gatom *x, t_symbol *s) +{ + return (canvas_realizedollar(x->a_glist, s)); } +#endif static void gatom_set(t_gatom *x, t_symbol *s, int argc, t_atom *argv) { @@ -453,13 +472,13 @@ static void gatom_bang(t_gatom *x) { if (x->a_text.te_outlet) outlet_float(x->a_text.te_outlet, x->a_atom.a_w.w_float); - if (*x->a_symto->s_name && x->a_symto->s_thing) + if (*x->a_expanded_to->s_name && x->a_expanded_to->s_thing) { if (x->a_symto == x->a_symfrom) pd_error(x, "%s: atom with same send/receive name (infinite loop)", x->a_symto->s_name); - else pd_float(x->a_symto->s_thing, x->a_atom.a_w.w_float); + else pd_float(x->a_expanded_to->s_thing, x->a_atom.a_w.w_float); } } else if (x->a_atom.a_type == A_SYMBOL) @@ -472,7 +491,7 @@ static void gatom_bang(t_gatom *x) pd_error(x, "%s: atom with same send/receive name (infinite loop)", x->a_symto->s_name); - else pd_symbol(x->a_symto->s_thing, x->a_atom.a_w.w_symbol); + else pd_symbol(x->a_expanded_to->s_thing, x->a_atom.a_w.w_symbol); } } } @@ -565,9 +584,15 @@ static void gatom_key(void *z, t_floatarg f) } else if (len < (ATOMBUFSIZE-1)) { - x->a_buf[len] = c; - x->a_buf[len+1] = 0; - goto redraw; + /* for numbers, only let reasonable characters through */ + if ((x->a_atom.a_type == A_SYMBOL) || + (c >= '0' && c <= '9' || c == '.' || c == '-' + || c == 'e' || c == 'E')) + { + x->a_buf[len] = c; + x->a_buf[len+1] = 0; + goto redraw; + } } return; redraw: @@ -648,11 +673,14 @@ static void gatom_param(t_gatom *x, t_symbol *sel, int argc, t_atom *argv) x->a_wherelabel = ((int)wherelabel & 3); x->a_label = label; if (*x->a_symfrom->s_name) - pd_unbind(&x->a_text.te_pd, x->a_symfrom); + pd_unbind(&x->a_text.te_pd, + canvas_realizedollar(x->a_glist, x->a_symfrom)); x->a_symfrom = symfrom; if (*x->a_symfrom->s_name) - pd_bind(&x->a_text.te_pd, x->a_symfrom); + pd_bind(&x->a_text.te_pd, + canvas_realizedollar(x->a_glist, x->a_symfrom)); x->a_symto = symto; + x->a_expanded_to = canvas_realizedollar(x->a_glist, x->a_symto); gobj_vis(&x->a_text.te_g, x->a_glist, 1); /* glist_retext(x->a_glist, &x->a_text); */ @@ -667,7 +695,8 @@ static void gatom_getwherelabel(t_gatom *x, t_glist *glist, int *xp, int *yp) height = y2 - y1; if (x->a_wherelabel == ATOM_LABELLEFT) { - *xp = x1 - 3 - strlen(x->a_label->s_name) * + *xp = x1 - 3 - + strlen(canvas_realizedollar(x->a_glist, x->a_label)->s_name) * sys_fontwidth(glist_getfont(glist)); *yp = y1 + 2; } @@ -710,7 +739,8 @@ static void gatom_vis(t_gobj *z, t_glist *glist, int vis) sys_vgui("pdtk_text_new .x%x.c %x.l %f %f {%s} %d %s\n", glist_getcanvas(glist), x, (double)x1, (double)y1, - x->a_label->s_name, sys_hostfontsize(glist_getfont(glist)), + canvas_realizedollar(x->a_glist, x->a_label)->s_name, + sys_hostfontsize(glist_getfont(glist)), "black"); } else sys_vgui(".x%x.c delete %x.l\n", glist_getcanvas(glist), x); @@ -733,7 +763,7 @@ void canvas_atom(t_glist *gl, t_atomtype type, x->a_wherelabel = 0; x->a_label = &s_; x->a_symfrom = &s_; - x->a_symto = &s_; + x->a_symto = x->a_expanded_to = &s_; if (type == A_FLOAT) { x->a_atom.a_w.w_float = 0; @@ -764,9 +794,11 @@ void canvas_atom(t_glist *gl, t_atomtype type, x->a_label = gatom_unescapit(atom_getsymbolarg(6, argc, argv)); x->a_symfrom = gatom_unescapit(atom_getsymbolarg(7, argc, argv)); if (*x->a_symfrom->s_name) - pd_bind(&x->a_text.te_pd, x->a_symfrom); + pd_bind(&x->a_text.te_pd, + canvas_realizedollar(x->a_glist, x->a_symfrom)); x->a_symto = gatom_unescapit(atom_getsymbolarg(8, argc, argv)); + x->a_expanded_to = canvas_realizedollar(x->a_glist, x->a_symto); if (x->a_symto == &s_) outlet_new(&x->a_text, x->a_atom.a_type == A_FLOAT ? &s_float: &s_symbol); @@ -805,7 +837,8 @@ void canvas_symbolatom(t_glist *gl, t_symbol *s, int argc, t_atom *argv) static void gatom_free(t_gatom *x) { if (*x->a_symfrom->s_name) - pd_bind(&x->a_text.te_pd, x->a_symfrom); + pd_unbind(&x->a_text.te_pd, + canvas_realizedollar(x->a_glist, x->a_symfrom)); gfxstub_deleteforkey(x); } diff --git a/pd/src/g_vdial.c b/pd/src/g_vdial.c index e1cd2a5d..4974227a 100644 --- a/pd/src/g_vdial.c +++ b/pd/src/g_vdial.c @@ -2,7 +2,7 @@ * For information on usage and redistribution, and for a DISCLAIMER OF ALL * WARRANTIES, see the file, "LICENSE.txt," in this distribution. */ -/* vradio.c written by Thomas Musil (c) IEM KUG Graz Austria 2000-2001 */ +/* vdial.c written by Thomas Musil (c) IEM KUG Graz Austria 2000-2001 */ /* name change to vradio by MSP (it's a radio button really) and changed to put out a "float" as in sliders, toggles, etc. */ diff --git a/pd/src/m_binbuf.c b/pd/src/m_binbuf.c index 1398ad84..fab30baf 100644 --- a/pd/src/m_binbuf.c +++ b/pd/src/m_binbuf.c @@ -419,7 +419,7 @@ t_atom *binbuf_getvec(t_binbuf *x) int canvas_getdollarzero( void); -t_symbol *realizedollsym(t_symbol *s, int ac, t_atom *av, int tonew) /* IOhannes: not static any more */ +t_symbol *binbuf_realizedollsym(t_symbol *s, int ac, t_atom *av, int tonew) { int argno = atol(s->s_name), lastnum; char buf[MAXPDSTRING], c, *sp; @@ -475,7 +475,8 @@ void binbuf_eval(t_binbuf *x, t_pd *target, int argc, t_atom *argv) } else if (at->a_type == A_DOLLSYM) { - if (!(s = realizedollsym(at->a_w.w_symbol, argc, argv, 0))) + if (!(s = binbuf_realizedollsym(at->a_w.w_symbol, + argc, argv, 0))) { error("$%s: not enough arguments supplied", at->a_w.w_symbol->s_name); @@ -554,7 +555,7 @@ void binbuf_eval(t_binbuf *x, t_pd *target, int argc, t_atom *argv) } break; case A_DOLLSYM: - s9 = realizedollsym(at->a_w.w_symbol, argc, argv, + s9 = binbuf_realizedollsym(at->a_w.w_symbol, argc, argv, target == &pd_objectmaker); if (!s9) goto broken; diff --git a/pd/src/m_pd.h b/pd/src/m_pd.h index c6ddb0c9..5e8b20bb 100644 --- a/pd/src/m_pd.h +++ b/pd/src/m_pd.h @@ -6,6 +6,8 @@ extern "C" { #endif +#define PD_VERSION 0.36 + #ifdef NT // #pragma warning( disable : 4091 ) #pragma warning( disable : 4305 ) /* uncast const double to float */ @@ -283,6 +285,8 @@ EXTERN int binbuf_read_via_path(t_binbuf *b, char *filename, char *dirname, EXTERN int binbuf_write(t_binbuf *x, char *filename, char *dir, int crflag); EXTERN void binbuf_evalfile(t_symbol *name, t_symbol *dir); +EXTERN t_symbol *binbuf_realizedollsym(t_symbol *s, int ac, t_atom *av, + int tonew); /* ------------------ clocks --------------- */ diff --git a/pd/src/makefile.nt b/pd/src/makefile.nt index 91d34051..4a301882 100644 --- a/pd/src/makefile.nt +++ b/pd/src/makefile.nt @@ -1,6 +1,6 @@ # Makefile for portaudio ASIO driver version of PD -all: pd gui ..\bin\pd.tk +all: pd gui ..\bin\pd.tk ..\bin\pdsend.exe ..\bin\pdreceive.exe VC = "C:\Program Files\Microsoft Visual Studio\VC98" #VC="\Program Files\DevStudio\Vc" @@ -76,6 +76,14 @@ gui: ..\bin\pdtcl.dll ..\bin\pd.tk: u_main.tk; copy u_main.tk ..\bin\pd.tk +..\bin\pdsend.exe: u_pdsend.obj + link $(LFLAGS) /out:..\bin\pdsend.exe /INCREMENTAL:NO u_pdsend.obj \ + $(LIB) + +..\bin\pdreceive.exe: u_pdreceive.obj + link $(LFLAGS) /out:..\bin\pdreceive.exe /INCREMENTAL:NO u_pdreceive.obj \ + $(LIB) + # explicit rules to compile portaudio sources: pa_lib.obj: $(PADIR)\pa_common\pa_lib.c cl /c $(ALLCF) $(PADIR)\pa_common\pa_lib.c diff --git a/pd/src/notes.txt b/pd/src/notes.txt index 03a8728f..1f0937e8 100644 --- a/pd/src/notes.txt +++ b/pd/src/notes.txt @@ -1,32 +1,17 @@ -done for 0.35: -bug fix: flipping canvases -bug fix: canvas coordinates saved correctly -signal lines fatter than control ones -number box labels, send&receive -rework [vh]dial -'make install' depending on Pd, etc -undo -fix symbol binding GUI problem -new expr object -test on p4s -undo paste and duplicate -fix flipped window resizing to move comments +done for 0.36: ---------------- dolist -------------------- -pddp doc +pddp doc scheduler to do DSP computations even if no audio hook to scheduler to let others get called for DSP I/O figure out how to avoid "dac freeze" if nosound try again to fix the font scene -look at zeros to IIR filters -compile pdsend, pdreceive for windows and document somehow addcomma message to message pasting should look at current mouse location problems: -number boxes should ignore non-numeric characters messages & comments don't come up with text activated? arrays of non-existent templates crash don't draw in/outlets on gui objects in graphs diff --git a/pd/src/s_inter.c b/pd/src/s_inter.c index b9f52d68..eed90b38 100644 --- a/pd/src/s_inter.c +++ b/pd/src/s_inter.c @@ -603,14 +603,22 @@ int sys_startgui(const char *guidir) char *homedir = getenv("HOME"), filename[250]; struct stat statbuf; if (!homedir || strlen(homedir) > 150) - goto nexttry; + goto nohomedir; + sprintf(filename, + "%s/Applications/Utilities/Wish shell.app/Contents/MacOS/Wish Shell", + homedir); + if (stat(filename, &statbuf) >= 0) + goto foundit; sprintf(filename, "%s/Applications/Wish shell.app/Contents/MacOS/Wish Shell", homedir); - if (stat(filename, &statbuf) >= 0) goto foundit; - nexttry: + nohomedir: + strcpy(filename, + "/Applications/Utilities/Wish Shell.app/Contents/MacOS/Wish Shell"); + if (stat(filename, &statbuf) >= 0) + goto foundit; strcpy(filename, "/Applications/Wish Shell.app/Contents/MacOS/Wish Shell"); foundit: diff --git a/pd/src/s_mac.c b/pd/src/s_mac.c index 9d3c1543..941fa93c 100644 --- a/pd/src/s_mac.c +++ b/pd/src/s_mac.c @@ -321,7 +321,7 @@ void sys_set_priority(int higher) #else /* no priority scheduling, so renice and wish for something better */ int retval; errno = 0; - retval = setpriority(PRIO_PROCESS, 0, (higher? -20 : -19)); + retval = setpriority(PRIO_PROCESS, 0, (higher? 0 : -20)); if (retval == -1 & errno != 0) { perror("setpriority"); diff --git a/pd/src/s_main.c b/pd/src/s_main.c index cb08960a..fdf36772 100644 --- a/pd/src/s_main.c +++ b/pd/src/s_main.c @@ -7,7 +7,7 @@ * 1311:forum::für::umläute:2001 */ -char pd_version[] = "Pd version 0.36 PRELIMINARY TEST 5\n"; +char pd_version[] = "Pd version 0.36-0\n"; char pd_compiletime[] = __TIME__; char pd_compiledate[] = __DATE__; @@ -47,6 +47,7 @@ static t_symbol *sys_guidir; static t_namelist *sys_externlist; static t_namelist *sys_openlist; static t_namelist *sys_messagelist; +static int sys_version; int sys_nmidiout = 1; #ifdef NT @@ -241,8 +242,10 @@ int sys_main(int argc, char **argv) #endif if (sys_argparse(argc, argv)) return (1); /* parse cmd line */ sys_addextrapath(); - if (sys_verbose) fprintf(stderr, "%s compiled %s %s\n", + if (sys_verbose || sys_version) fprintf(stderr, "%scompiled %s %s\n", pd_version, pd_compiletime, pd_compiledate); + if (sys_version) /* if we were just asked our version, exit here. */ + return (0); /* open audio and MIDI */ sys_open_midi(sys_nmidiin, sys_midiindevlist, sys_nmidiout, sys_midioutdevlist); @@ -322,6 +325,7 @@ static char *(usagemessage[]) = { "-lib <file> -- load object library(s)\n", "-font <n> -- specify default font size in points\n", "-verbose -- extra printout on startup and when searching for files\n", +"-version -- don't run Pd; just print out which version it is \n", "-d <n> -- specify debug level\n", "-noloadbang -- suppress all loadbangs\n", "-nogui -- suppress starting the GUI\n", @@ -609,6 +613,11 @@ int sys_argparse(int argc, char **argv) sys_verbose = 1; argc--; argv++; } + else if (!strcmp(*argv, "-version")) + { + sys_version = 1; + argc--; argv++; + } else if (!strcmp(*argv, "-d") && argc > 1 && sscanf(argv[1], "%d", &sys_debuglevel) >= 1) { diff --git a/pd/src/t_tkcmd.c b/pd/src/t_tkcmd.c index 3415691b..a862beda 100644 --- a/pd/src/t_tkcmd.c +++ b/pd/src/t_tkcmd.c @@ -168,7 +168,11 @@ void pdgui_setupsocket(void) { struct sockaddr_in server; struct hostent *hp; - +#ifdef UNIX + int retry = 10; +#else + int retry = 1; +#endif #ifdef NT short version = MAKEWORD(2, 0); WSADATA nobby; @@ -197,14 +201,41 @@ void pdgui_setupsocket(void) server.sin_port = htons((unsigned short)portno); /* try to connect */ - if (connect(sockfd, (struct sockaddr *) &server, sizeof (server)) < 0) - pdgui_sockerror("connecting stream socket"); - + while (1) + { + if (connect(sockfd, (struct sockaddr *) &server, sizeof (server)) >= 0) + goto gotit; + retry--; + if (retry <= 0) + break; + /* In UNIX there's a race condition; the child won't be + able to connect before the parent (pd) has shed its + setuid-ness. In case this is the problem, sleep and + retry. */ + else + { +#ifdef UNIX + fd_set readset, writeset, exceptset; + struct timeval timout; + + timout.tv_sec = 0; + timout.tv_usec = 100000; + FD_ZERO(&writeset); + FD_ZERO(&readset); + FD_ZERO(&exceptset); + fprintf(stderr, "retrying connect...\n"); + if (select(1, &readset, &writeset, &exceptset, &timout) < 0) + perror("select"); +#endif /* UNIX */ + } + } + pdgui_sockerror("connecting stream socket"); +gotit: ; #ifdef UNIX /* in unix we ask TK to call us back. In NT we have to poll. */ Tk_CreateFileHandler(sockfd, TK_READABLE | TK_EXCEPTION, pd_readsocket, 0); -#endif +#endif /* UNIX */ } /**************************** commands ************************/ diff --git a/pd/src/u_main.tk b/pd/src/u_main.tk index da17b720..9af14282 100644 --- a/pd/src/u_main.tk +++ b/pd/src/u_main.tk @@ -159,19 +159,11 @@ proc menu_new {} { proc menu_open {} { global pd_opendir - global pd_nt -# workaround -- initialdir doesn't work on MACOSX yet --- - if {$pd_nt == 2} { - cd $pd_opendir - set filename [tk_getOpenFile -defaultextension .pd \ - -filetypes { {{pd files} {.pd}} {{max files} {.pat}}} ] - } else { - set filename [tk_getOpenFile -defaultextension .pd \ - -filetypes { {{pd files} {.pd}} {{max files} {.pat}}} \ - -initialdir $pd_opendir] - } -# puts stderr $filename + set filename [tk_getOpenFile -defaultextension .pd \ + -filetypes { {{pd files} {.pd}} {{max files} {.pat}}} \ + -initialdir $pd_opendir] + if {$filename != ""} { set directory [string range $filename 0 \ [expr [string last / $filename ] - 1]] @@ -242,17 +234,10 @@ set help_directory $pd_guidir/doc proc menu_documentation {} { global help_directory - global pd_nt - if {$pd_nt == 2} { - cd $help_directory - set filename [tk_getOpenFile -defaultextension .pd \ - -filetypes { {{documentation} {.pd .txt .htm}} } ] - } else { - set filename [tk_getOpenFile -defaultextension .pd \ - -filetypes { {{documentation} {.pd .txt .htm}} } \ - -initialdir $help_directory] - } + set filename [tk_getOpenFile -defaultextension .pd \ + -filetypes { {{documentation} {.pd .txt .htm}} } \ + -initialdir $help_directory] if {$filename != ""} { if {[string first .txt $filename] >= 0} { @@ -983,9 +968,9 @@ proc pdtk_canvas_keyup {name key iso} { # puts stderr [concat up key= $key iso= $iso] if {$iso != ""} { scan $iso %c keynum - pd [canvastosym $name] key 0 $keynum \; + pd [canvastosym $name] key 0 $keynum 0 \; } else { - pd [canvastosym $name] key 0 $key \; + pd [canvastosym $name] key 0 $key 0 \; } } @@ -1063,17 +1048,10 @@ set saveas_dir nowhere ############ pdtk_canvas_saveas -- run a saveas dialog ############## proc pdtk_canvas_saveas {name initfile initdir} { - global pd_nt - if {$pd_nt == 2} { - cd $initdir - set filename [tk_getSaveFile -initialfile $initfile \ - -defaultextension .pd \ - -filetypes { {{pd files} {.pd}} {{max files} {.pat}} }] - } else { - set filename [tk_getSaveFile -initialfile $initfile \ - -initialdir $initdir -defaultextension .pd \ - -filetypes { {{pd files} {.pd}} {{max files} {.pat}} }] - } + set filename [tk_getSaveFile -initialfile $initfile \ + -initialdir $initdir -defaultextension .pd \ + -filetypes { {{pd files} {.pd}} {{max files} {.pat}} }] + if {$filename != ""} { set directory [string range $filename 0 \ [expr [string last / $filename ] - 1]] @@ -1184,9 +1162,14 @@ proc gatom_escape {sym} { set ret [string replace $sym 0 0 "--"] # puts stderr [concat escape $sym $ret] } else { - set ret $sym -# puts stderr [concat escape $sym "no change"] - } + if {[string equal -length 1 $sym "$"]} { + set ret [string replace $sym 0 0 "#"] +# puts stderr [concat unescape $sym $ret] + } else { + set ret $sym +# puts stderr [concat escape $sym "no change"] + } + } } concat $ret } @@ -1196,8 +1179,13 @@ proc gatom_unescape {sym} { set ret [string replace $sym 0 0 ""] # puts stderr [concat unescape $sym $ret] } else { - set ret $sym -# puts stderr [concat unescape $sym "no change"] + if {[string equal -length 1 $sym "#"]} { + set ret [string replace $sym 0 0 "$"] +# puts stderr [concat unescape $sym $ret] + } else { + set ret $sym +# puts stderr [concat unescape $sym "no change"] + } } concat $ret } @@ -1221,7 +1209,7 @@ proc dogatom_apply {id} { global $var_gatomsymto # set cmd [concat $id param $gatomwidth $gatomlo $gatomhi \;] - + set cmd [concat $id param \ [eval concat $$var_gatomwidth] \ [eval concat $$var_gatomlo] \ @@ -2596,7 +2584,7 @@ proc texteditor_send {name} { {incr i 1} { set cha [$name get [concat 0.0 + $i chars]] scan $cha %c keynum - pd [concat pd key 1 $keynum \;] + pd [concat pd key 1 $keynum 0 \;] } } @@ -2639,14 +2627,8 @@ proc pdtk_pd_texteditor {stuff} { proc pdtk_openpanel {target} { global pd_opendir - global pd_nt - if {$pd_nt == 2} { - cd $pd_opendir - set filename [tk_getOpenFile ] - } else { - set filename [tk_getOpenFile \ - -initialdir $pd_opendir] - } + set filename [tk_getOpenFile \ + -initialdir $pd_opendir] if {$filename != ""} { set directory [string range $filename 0 \ [expr [string last / $filename ] - 1]] diff --git a/pd/src/u_pdreceive.c b/pd/src/u_pdreceive.c index 8d3f83e9..c01be01c 100644 --- a/pd/src/u_pdreceive.c +++ b/pd/src/u_pdreceive.c @@ -6,14 +6,14 @@ from Pd via the netsend/netreceive ("FUDI") protocol, and copies them to standard output. */ -#include <sys/time.h> #include <sys/types.h> #include <string.h> #include <stdio.h> #include <errno.h> -#include <unistd.h> #include <stdlib.h> #ifdef UNIX +#include <sys/time.h> +#include <unistd.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> @@ -38,7 +38,7 @@ static int sockfd; static int protocol; static void sockerror(char *s); -static void closesocket(int fd); +static void x_closesocket(int fd); static void dopoll(void); #define BUFSIZE 4096 @@ -47,6 +47,10 @@ int main(int argc, char **argv) int portno; struct sockaddr_in server; int nretry = 10; +#ifdef NT + short version = MAKEWORD(2, 0); + WSADATA nobby; +#endif if (argc < 2 || sscanf(argv[1], "%d", &portno) < 1 || portno <= 0) goto usage; if (argc >= 3) @@ -58,6 +62,9 @@ int main(int argc, char **argv) else goto usage; } else protocol = SOCK_STREAM; +#ifdef NT + if (WSAStartup(version, &nobby)) sockerror("WSAstartup"); +#endif sockfd = socket(AF_INET, protocol, 0); if (sockfd < 0) { @@ -82,7 +89,7 @@ int main(int argc, char **argv) if (bind(sockfd, (struct sockaddr *)&server, sizeof(server)) < 0) { sockerror("bind"); - closesocket(sockfd); + x_closesocket(sockfd); return (0); } if (protocol == SOCK_STREAM) @@ -90,7 +97,7 @@ int main(int argc, char **argv) if (listen(sockfd, 5) < 0) { sockerror("listen"); - closesocket(sockfd); + x_closesocket(sockfd); exit(1); } } @@ -132,7 +139,7 @@ static void rmport(t_fdpoll *x) { if (fp == x) { - closesocket(fp->fdp_fd); + x_closesocket(fp->fdp_fd); free(fp->fdp_inbuf); while (i--) { @@ -164,16 +171,22 @@ static void udpread(void) if (ret < 0) { sockerror("recv (udp)"); - close(sockfd); + x_closesocket(sockfd); exit(1); } else if (ret > 0) { +#ifdef UNIX if (write(1, buf, ret) < ret) { perror("write"); exit(1); } +#else + int j; + for (j = 0; j < ret; j++) + putchar(buf[j]); +#endif } } @@ -196,8 +209,16 @@ static int tcpmakeoutput(t_fdpoll *x) if (inbuf[intail] == '\n') intail = (intail+1)&(BUFSIZE-1); *bp++ = '\n'; - write(1, messbuf, bp - messbuf); - x->fdp_inhead = inhead; +#ifdef UNIX + write(1, messbuf, bp - messbuf); +#else + { + int j; + for (j = 0; j < bp - messbuf; j++) + putchar(messbuf[j]); + } +#endif + x->fdp_inhead = inhead; x->fdp_intail = intail; return (1); } @@ -207,7 +228,6 @@ static int tcpmakeoutput(t_fdpoll *x) static void tcpread(t_fdpoll *x) { - char *semi; int readto = (x->fdp_inhead >= x->fdp_intail ? BUFSIZE : x->fdp_intail-1); int ret; @@ -294,7 +314,7 @@ static void sockerror(char *s) fprintf(stderr, "%s: %s (%d)\n", s, strerror(err), err); } -static void closesocket(int fd) +static void x_closesocket(int fd) { #ifdef UNIX close(fd); diff --git a/pd/src/u_pdsend.c b/pd/src/u_pdsend.c index 87e7150d..896c5646 100644 --- a/pd/src/u_pdsend.c +++ b/pd/src/u_pdsend.c @@ -9,9 +9,9 @@ from its standard input to Pd via the netsend/netreceive ("FUDI") protocol. */ #include <string.h> #include <stdio.h> #include <errno.h> -#include <unistd.h> #include <stdlib.h> #ifdef UNIX +#include <unistd.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> @@ -21,7 +21,7 @@ from its standard input to Pd via the netsend/netreceive ("FUDI") protocol. */ #endif void sockerror(char *s); -void closesocket(int fd); +void x_closesocket(int fd); #define BUFSIZE 4096 int main(int argc, char **argv) @@ -31,6 +31,10 @@ int main(int argc, char **argv) struct hostent *hp; char *hostname; int nretry = 10; +#ifdef NT + short version = MAKEWORD(2, 0); + WSADATA nobby; +#endif if (argc < 2 || sscanf(argv[1], "%d", &portno) < 1 || portno <= 0) goto usage; if (argc >= 3) @@ -45,6 +49,9 @@ int main(int argc, char **argv) else goto usage; } else protocol = SOCK_STREAM; +#ifdef NT + if (WSAStartup(version, &nobby)) sockerror("WSAstartup"); +#endif sockfd = socket(AF_INET, protocol, 0); if (sockfd < 0) @@ -58,7 +65,7 @@ int main(int argc, char **argv) if (hp == 0) { fprintf(stderr, "%s: unknown host\n", hostname); - closesocket(sockfd); + x_closesocket(sockfd); exit(1); } memcpy((char *)&server.sin_addr, (char *)hp->h_addr, hp->h_length); @@ -81,7 +88,7 @@ int main(int argc, char **argv) goto connected; sockerror("connect"); } - closesocket(sockfd); + x_closesocket(sockfd); exit(1); connected: ; #else @@ -89,7 +96,7 @@ connected: ; if (connect(sockfd, (struct sockaddr *) &server, sizeof (server)) < 0) { sockerror("connect"); - closesocket(sockfd); + x_closesocket(sockfd); exit(1); } #endif @@ -139,7 +146,7 @@ void sockerror(char *s) fprintf(stderr, "%s: %s (%d)\n", s, strerror(err), err); } -void closesocket(int fd) +void x_closesocket(int fd) { #ifdef UNIX close(fd); diff --git a/pd/src/z.pd b/pd/src/z.pd index a415176c..22c5b0d9 100644 --- a/pd/src/z.pd +++ b/pd/src/z.pd @@ -1,31 +1,9 @@ -#N canvas 176 287 548 368 12; -#X obj 51 82 vradio 15 1 0 8 empty empty empty 0 -6 0 8 -262144 -1 --1 0; -#X obj 110 93 vdl 15 1 0 8 empty empty empty 0 -6 0 8 -262144 -1 -1 -0; -#X obj 78 240 vradio 15 1 0 8 empty empty empty 0 -6 0 8 -262144 -1 --1 0; -#X floatatom 149 52 5 0 0 0 - - -; -#X floatatom 240 177 5 0 0 0 - - -; -#X obj 361 97 vradio 15 1 0 8 empty empty empty 0 -6 0 8 -262144 -1 --1 0; -#X floatatom 374 257 5 0 0 0 - - -; -#X obj 252 280 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 --262144 -1 -1 0 256; -#X floatatom 478 73 5 0 0 0 receive asd -; -#X floatatom 241 241 5 0 0 0 - - -; -#X floatatom 477 102 5 0 0 0 send - fgdfh; -#X floatatom 474 141 5 0 0 0 both wer rty; -#X obj 242 120; -#X floatatom 287 111 5 0 0 0 - - -; -#X obj 186 116 + 5; -#X obj 172 311 expr~ $v1 + 4; -#X connect 3 0 1 0; -#X connect 3 0 0 0; -#X connect 3 0 5 0; -#X connect 3 0 14 0; -#X connect 4 0 2 0; -#X connect 5 0 6 0; -#X connect 9 0 7 0; -#X connect 14 0 4 0; -#X coords 0 0 1 1 300 200 1; +#N canvas 0 0 450 300 10; +#X obj 111 114 +~; +#X obj 112 56 +~; +#N canvas 281 44 450 300 foo 1; +#X obj 111 114 +~; +#X obj 112 56 +~; +#X connect 1 0 0 0; +#X restore 206 67 pd foo; +#X connect 1 0 0 0; diff --git a/pd/src/z2.pd b/pd/src/z2.pd index cd1e0745..c49a070f 100644 --- a/pd/src/z2.pd +++ b/pd/src/z2.pd @@ -1,25 +1,3 @@ -#N canvas 176 287 548 368 12; -#X obj 51 82 vradio 15 1 0 8 empty empty empty 0 -6 0 8 -262144 -1 --1 0; -#X obj 150 82 vdl 15 1 0 8 empty empty empty 0 -6 0 8 -262144 -1 -1 -0; -#X obj 78 240 vradio 15 1 0 8 empty empty empty 0 -6 0 8 -262144 -1 --1 0; -#X floatatom 149 52 5 0 0 0 - - -; -#X floatatom 244 182 5 0 0 0 - - -; -#X obj 361 97 vradio 15 1 0 8 empty empty empty 0 -6 0 8 -262144 -1 --1 0; -#X floatatom 374 257 5 0 0 0 - - -; -#X obj 256 285 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 --262144 -1 -1 0 256; -#X floatatom 478 73 5 0 0 0 receive asd -; -#X floatatom 245 246 5 0 0 0 - - -; -#X floatatom 475 156 5 0 0 0 send weghg -; -#X floatatom 466 220 5 0 0 0 both - rty; -#X connect 3 0 1 0; -#X connect 3 0 0 0; -#X connect 3 0 5 0; -#X connect 4 0 2 0; -#X connect 5 0 6 0; -#X connect 9 0 7 0; -#X coords 0 0 1 1 300 200 1; +#N canvas 0 0 450 300 10; +#X obj 114 57 1; +#X obj 111 114 1; diff --git a/pd/src/z3.pd b/pd/src/z3.pd index 76e698de..837a79c0 100644 --- a/pd/src/z3.pd +++ b/pd/src/z3.pd @@ -1,14 +1,17 @@ -#N canvas 409 180 735 452 12; -#X floatatom 267 57 0 0 0 1 input-dB - -; -#X obj 267 82 r tuning; -#X obj 267 129 r rest; -#X obj 267 35 r in-DB; -#X floatatom 267 104 0 0 0 1 tuning - -; -#X obj 267 10 tgl 20 0 meters set-meters meters 24 8 192 12 -262144 --1 -1 0 1; -#X obj 267 152 tgl 20 0 empty empty rest 24 8 0 12 -262144 -1 -1 0 +#N canvas 0 0 450 300 10; +#X floatatom 87 39 5 0 0 0 - - -; +#X floatatom 294 40 5 0 0 0 - - -; +#X obj 88 75 vdl 15 1 0 8 empty empty empty 0 -6 0 8 -262144 -1 -1 1; -#X connect 1 0 4 0; -#X connect 2 0 6 0; -#X connect 3 0 0 0; -#X coords 0 0 1 1 300 200 1; +#X obj 294 69 hdl 15 1 0 8 empty empty empty 0 -6 0 8 -262144 -1 -1 +0; +#X floatatom 88 206 5 0 0 0 - - -; +#X floatatom 295 207 5 0 0 0 - - -; +#X obj 172 121 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 +1; +#X obj 175 91 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 +-262144 -1 -1 0 256; +#X connect 0 0 2 0; +#X connect 1 0 3 0; +#X connect 2 0 4 0; +#X connect 3 0 5 0; |