impl-node: async driver nodes need to activate targets

When a driver is async it still needs to activate the targets or else no
targets will ever be triggered.

Fixes #4046
This commit is contained in:
Wim Taymans 2024-06-10 16:32:13 +02:00
parent 0d9a959ab6
commit c85e7cadf1

View file

@ -74,7 +74,7 @@ static inline void activate_target(struct pw_impl_node *node, struct pw_node_tar
{
struct pw_node_activation_state *state = &t->activation->state[0];
if (!t->active) {
if (!node->async) {
if (!node->async || node->driving) {
SPA_ATOMIC_INC(state->required);
SPA_ATOMIC_INC(state->pending);
}
@ -88,7 +88,7 @@ static inline void deactivate_target(struct pw_impl_node *node, struct pw_node_t
{
if (t->active) {
struct pw_node_activation_state *state = &t->activation->state[0];
if (!node->async) {
if (!node->async || node->driving) {
/* the driver copies the required to the pending state
* so first try to resume the node and then decrement the
* required state. This way we either resume with the old value