Commit 2667dfa5 authored by Jonathan Wilkes's avatar Jonathan Wilkes
Browse files

Merge branch 'aggraef/purr-data-vanilla-signalin-fixes'

parents a85a24dc dc897de6
...@@ -686,15 +686,9 @@ void ugen_connect(t_dspcontext *dc, t_object *x1, int outno, t_object *x2, ...@@ -686,15 +686,9 @@ void ugen_connect(t_dspcontext *dc, t_object *x1, int outno, t_object *x2,
error("object with signal outlets but no DSP method?"); error("object with signal outlets but no DSP method?");
/* check if it's a "text" (i.e., object wasn't created) - /* check if it's a "text" (i.e., object wasn't created) -
if so fail silently */ if so fail silently */
t_text *t2 = (t_text *)x2; else if (!(x2 && (pd_class(&x2->ob_pd) == text_class)))
// The following only happens if the DAC is on while connecting pd_error(u1->u_obj,
// objects. If this is not yet initialized object we don't "signal outlet connect to nonsignal inlet (ignored)");
// really know if its inlet is signal or not, so we don't post
// the error.
if (pd_class(&t2->te_pd) != text_class ||
(pd_class(&t2->te_pd) == text_class && t2->te_type == T_TEXT))
pd_error(u1->u_obj,
"signal outlet connect to nonsignal inlet (ignored)");
return; return;
} }
if (sigoutno < 0 || sigoutno >= u1->u_nout || siginno >= u2->u_nin) if (sigoutno < 0 || sigoutno >= u1->u_nout || siginno >= u2->u_nin)
...@@ -743,7 +737,7 @@ static void ugen_doit(t_dspcontext *dc, t_ugenbox *u) ...@@ -743,7 +737,7 @@ static void ugen_doit(t_dspcontext *dc, t_ugenbox *u)
is set. We don't yet know if a subcanvas will be "blocking" so there is set. We don't yet know if a subcanvas will be "blocking" so there
we delay new signal creation, which will be handled by calling we delay new signal creation, which will be handled by calling
signal_setborrowed in the ugen_done_graph routine below. */ signal_setborrowed in the ugen_done_graph routine below. */
int nonewsigs = (class == canvas_class || int nonewsigs = (class == canvas_class ||
((class == vinlet_class) && !(dc->dc_reblock))); ((class == vinlet_class) && !(dc->dc_reblock)));
/* when we encounter a subcanvas or a signal outlet, suppress freeing /* when we encounter a subcanvas or a signal outlet, suppress freeing
the input signals as they may be "borrowed" for the super or sub the input signals as they may be "borrowed" for the super or sub
......
...@@ -691,10 +691,12 @@ int obj_siginletindex(t_object *x, int m) ...@@ -691,10 +691,12 @@ int obj_siginletindex(t_object *x, int m)
{ {
int n = 0; int n = 0;
t_inlet *i; t_inlet *i;
if (x->ob_pd->c_firstin && x->ob_pd->c_floatsignalin) if (x->ob_pd->c_firstin)
{ {
if (!m--) return (0); if (!m--)
n++; return (0);
if (x->ob_pd->c_floatsignalin)
n++;
} }
for (i = x->ob_inlet; i; i = i->i_next, m--) for (i = x->ob_inlet; i; i = i->i_next, m--)
if (i->i_symfrom == &s_signal) if (i->i_symfrom == &s_signal)
...@@ -750,21 +752,18 @@ int obj_issignaloutlet(t_object *x, int m) ...@@ -750,21 +752,18 @@ int obj_issignaloutlet(t_object *x, int m)
t_float *obj_findsignalscalar(t_object *x, int m) t_float *obj_findsignalscalar(t_object *x, int m)
{ {
int n = 0;
t_inlet *i; t_inlet *i;
if (x->ob_pd->c_firstin && x->ob_pd->c_floatsignalin) if (x->ob_pd->c_firstin && x->ob_pd->c_floatsignalin)
{ {
if (!m--) if (!m--)
return (x->ob_pd->c_floatsignalin > 0 ? return (x->ob_pd->c_floatsignalin > 0 ?
(t_float *)(((char *)x) + x->ob_pd->c_floatsignalin) : 0); (t_float *)(((char *)x) + x->ob_pd->c_floatsignalin) : 0);
n++;
} }
for (i = x->ob_inlet; i; i = i->i_next, m--) for (i = x->ob_inlet; i; i = i->i_next)
if (i->i_symfrom == &s_signal) if (i->i_symfrom == &s_signal)
{ {
if (m == 0) if (m-- == 0)
return (&i->i_un.iu_floatsignalvalue); return (&i->i_un.iu_floatsignalvalue);
n++;
} }
return (0); return (0);
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment