Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
David MacDonald
purr-data
Commits
2667dfa5
Commit
2667dfa5
authored
Feb 22, 2017
by
Jonathan Wilkes
Browse files
Merge branch 'aggraef/purr-data-vanilla-signalin-fixes'
parents
a85a24dc
dc897de6
Changes
2
Hide whitespace changes
Inline
Side-by-side
pd/src/d_ugen.c
View file @
2667dfa5
...
...
@@ -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?"
);
/* check if it's a "text" (i.e., object wasn't created) -
if so fail silently */
t_text
*
t2
=
(
t_text
*
)
x2
;
// The following only happens if the DAC is on while connecting
// objects. If this is not yet initialized object we don't
// 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)"
);
else
if
(
!
(
x2
&&
(
pd_class
(
&
x2
->
ob_pd
)
==
text_class
)))
pd_error
(
u1
->
u_obj
,
"signal outlet connect to nonsignal inlet (ignored)"
);
return
;
}
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)
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
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
)));
/* when we encounter a subcanvas or a signal outlet, suppress freeing
the input signals as they may be "borrowed" for the super or sub
...
...
pd/src/m_obj.c
View file @
2667dfa5
...
...
@@ -691,10 +691,12 @@ int obj_siginletindex(t_object *x, int m)
{
int
n
=
0
;
t_inlet
*
i
;
if
(
x
->
ob_pd
->
c_firstin
&&
x
->
ob_pd
->
c_floatsignalin
)
if
(
x
->
ob_pd
->
c_firstin
)
{
if
(
!
m
--
)
return
(
0
);
n
++
;
if
(
!
m
--
)
return
(
0
);
if
(
x
->
ob_pd
->
c_floatsignalin
)
n
++
;
}
for
(
i
=
x
->
ob_inlet
;
i
;
i
=
i
->
i_next
,
m
--
)
if
(
i
->
i_symfrom
==
&
s_signal
)
...
...
@@ -750,21 +752,18 @@ int obj_issignaloutlet(t_object *x, int m)
t_float
*
obj_findsignalscalar
(
t_object
*
x
,
int
m
)
{
int
n
=
0
;
t_inlet
*
i
;
if
(
x
->
ob_pd
->
c_firstin
&&
x
->
ob_pd
->
c_floatsignalin
)
{
if
(
!
m
--
)
return
(
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
(
m
==
0
)
if
(
m
--
==
0
)
return
(
&
i
->
i_un
.
iu_floatsignalvalue
);
n
++
;
}
return
(
0
);
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment