node: use activation to check for completed graph

The driver node is not scheduled on the server side and so we only
know if it finished by checking the activation.
This commit is contained in:
Wim Taymans 2019-07-29 17:07:37 +02:00
parent 796d0133bf
commit 5aba40752d
2 changed files with 1 additions and 4 deletions

View file

@ -795,7 +795,6 @@ static inline int process_node(void *data)
a->status = FINISHED; a->status = FINISHED;
a->signal_time = a->finish_time; a->signal_time = a->finish_time;
a->finish_time = SPA_TIMESPEC_TO_NSEC(&ts); a->finish_time = SPA_TIMESPEC_TO_NSEC(&ts);
a->running = false;
pw_log_trace_fp("node %p: graph completed wait:%"PRIu64" run:%"PRIu64, this, pw_log_trace_fp("node %p: graph completed wait:%"PRIu64" run:%"PRIu64, this,
a->awake_time - a->signal_time, a->awake_time - a->signal_time,
a->finish_time - a->awake_time); a->finish_time - a->awake_time);
@ -1128,7 +1127,7 @@ static int node_ready(void *data, int status)
node->driver, node->exported, driver, status); node->driver, node->exported, driver, status);
if (node == driver) { if (node == driver) {
if (node->rt.activation->running) { if (node->rt.activation->state[0].pending != 0) {
pw_log_warn("node %p: graph not finished", node); pw_log_warn("node %p: graph not finished", node);
dump_states(node); dump_states(node);
node->rt.target.signal(node->rt.target.data); node->rt.target.signal(node->rt.target.data);
@ -1137,7 +1136,6 @@ static int node_ready(void *data, int status)
pw_node_activation_state_reset(&t->activation->state[0]); pw_node_activation_state_reset(&t->activation->state[0]);
t->activation->status = NOT_TRIGGERED; t->activation->status = NOT_TRIGGERED;
} }
node->rt.activation->running = true;
} }
if (node->driver && !node->master) if (node->driver && !node->master)
return 0; return 0;

View file

@ -356,7 +356,6 @@ struct pw_node_activation {
#define AWAKE 2 #define AWAKE 2
#define FINISHED 3 #define FINISHED 3
int status; int status;
int running;
uint64_t signal_time; uint64_t signal_time;
uint64_t awake_time; uint64_t awake_time;