mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-31 22:25:38 -04:00
client-node: pass the ready status in the activation state
Pass the ready status to the client-node using the state array. Don't just SPA_STATUS_HAVE_DATA on the server side but use the value from the client. This avoids some potential extra work when a driver sink pulls in data with the NEED_DATA ready callback but then the server performs the actions (tee) as if it were SPA_STATUS_HAVE_DATA.
This commit is contained in:
parent
989f597860
commit
5303fced50
2 changed files with 7 additions and 3 deletions
|
|
@ -1105,6 +1105,8 @@ static void node_on_data_fd_events(struct spa_source *source)
|
|||
if (source->rmask & SPA_IO_IN) {
|
||||
uint64_t cmd;
|
||||
struct pw_impl_node *node = this->impl->this.node;
|
||||
struct pw_node_activation *a = node->rt.activation;
|
||||
int status;
|
||||
|
||||
if (SPA_UNLIKELY(spa_system_eventfd_read(this->data_system,
|
||||
this->data_source.fd, &cmd) < 0))
|
||||
|
|
@ -1113,8 +1115,9 @@ static void node_on_data_fd_events(struct spa_source *source)
|
|||
pw_log_info("(%s-%u) client missed %"PRIu64" wakeups",
|
||||
node->name, node->info.id, cmd - 1);
|
||||
|
||||
spa_log_trace_fp(this->log, "%p: got ready", this);
|
||||
spa_node_call_ready(&this->callbacks, SPA_STATUS_HAVE_DATA);
|
||||
status = a->state[0].status;
|
||||
spa_log_trace_fp(this->log, "%p: got ready %d", this, status);
|
||||
spa_node_call_ready(&this->callbacks, status);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1189,8 +1189,9 @@ static int node_ready(void *d, int status)
|
|||
spa_node_process(p->mix);
|
||||
}
|
||||
|
||||
spa_system_clock_gettime(data_system, CLOCK_MONOTONIC, &ts);
|
||||
a->state[0].status = status;
|
||||
a->status = PW_NODE_ACTIVATION_TRIGGERED;
|
||||
spa_system_clock_gettime(data_system, CLOCK_MONOTONIC, &ts);
|
||||
a->signal_time = SPA_TIMESPEC_TO_NSEC(&ts);
|
||||
|
||||
if (SPA_UNLIKELY(spa_system_eventfd_write(data_system, data->rtwritefd, 1) < 0))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue