if a abstractions:
#N canvas 0 0 302 243 8; #X obj 103 52 inlet~; #X obj 166 54 inlet; #X obj 42 155 outlet~; #X obj 158 147 outlet; #X connect 1 0 3 0; #X connect 2 0 4 0;
inlet~ inlet | | outlet~ outlet
is loaded then in the main patch, inlet is the left input and inlet~ the right one, that means message inlets always first...the same with outlets...
in max the order is the how inlets are placed in abstracions, so is this the expected way to do abstraction or a bug ?
BUG:
if you accidently make a bang object, instead of a bang message then pd "segmentation fault"s on sgis and linux... so the symbol bang is identified as object, which isnt one:
Consistency check failed: canvas_setargs
Program received signal SIGSEGV, Segmentation fault.
0xfa3a510 in memmove ()
thanks, winfried ritsch
PS.:i got a much better performance under my P100-Notebook under linux, than on a 166 Pentium-Computer under W95, I think the Tk/Tcl is much slower on W95 ?
[...]
BUG:
if you accidently make a bang object, instead of a bang message then pd "segmentation fault"s on sgis and linux... so the symbol bang is identified as object, which isnt one:
Consistency check failed: canvas_setargs Program received signal SIGSEGV, Segmentation fault. 0xfa3a510 in memmove ()
Possible Solution:
making a bang object (maybe in x_connective.c) x_bang.c: send a anything in and get a bang out (like [t b])
--- cut here ---
/* -------------------------- bang ------------------------------ */ static t_class *pdbang_class;
typedef struct _pdbang { t_object x_obj; } t_pdbang;
static void *pdbang_new(t_pd *dummy) { t_pdbang *x = (t_pdbang *)pd_new(pdbang_class); outlet_new(&x->x_obj, &s_bang); newest = &x->x_obj.ob_pd; return (x); }
static void pdbang_bang(t_pdbang *x) { outlet_bang(x->x_obj.ob_outlet); }
static void pdbang_int(t_pdbang *x, t_int n) { outlet_bang(x->x_obj.ob_outlet); }
static void pdbang_float(t_pdbang *x, t_float f) { outlet_bang(x->x_obj.ob_outlet); }
void pdbang_setup(void) { pdbang_class = class_new(gensym("bang"), (t_newmethod)pdbang_new, 0, sizeof(t_pdbang), 0, 0); class_addcreator(pdbang_new, gensym("b"), 0); class_addbang(pdbang_class, pdbang_bang); class_addint(pdbang_class, pdbang_int); class_addfloat(pdbang_class, (t_method)pdbang_float); } --- cut here --
I hope I catched millers syntax style ;-)
...also add bang_setup() in x_connective_setup(void).
Actually, you might just want to do:
class_addanything(pdbang_class, (t_method)pdbang_trigger);
This is completely untested. At a minimum, add
class_addsymbol(pdbang_class, (t_method)pdbang_trigger); class_addlist(pdbang_class, (t_method)pdbang_trigger);
Later, Mark
Winfried Ritsch wrote:
<snip> > void pdbang_setup(void) > { > pdbang_class = class_new(gensym("bang"), (t_newmethod)pdbang_new, 0, > sizeof(t_pdbang), 0, 0); > class_addcreator(pdbang_new, gensym("b"), 0); > class_addbang(pdbang_class, pdbang_bang); > class_addint(pdbang_class, pdbang_int); > class_addfloat(pdbang_class, (t_method)pdbang_float); > } <snip>
Winfried Ritsch wrote:
if a abstractions:
#N canvas 0 0 302 243 8; #X obj 103 52 inlet~; #X obj 166 54 inlet; #X obj 42 155 outlet~; #X obj 158 147 outlet; #X connect 1 0 3 0; #X connect 2 0 4 0;
When were inlet~ and outlet~ implemented? the release notes say that this isn't working yet!
Larry
-- Larry Troxler -- lt@westnet.com -- Patterson, NY USA --