client-node: make it possible to skip signal

Add an option to not signal the remote implementation when we still
have enough data.
This commit is contained in:
Wim Taymans 2018-04-26 09:49:29 +02:00
parent f784da5505
commit a6cb6b740c
3 changed files with 13 additions and 0 deletions

View file

@ -891,6 +891,11 @@ static int impl_node_process(struct spa_node *node)
struct node *this = SPA_CONTAINER_OF(node, struct node, node);
uint64_t cmd = 1;
if (this->impl->this.status != SPA_ID_INVALID) {
spa_log_trace(this->log, "%p: return %d", this, this->impl->this.status);
return this->impl->this.status;
}
spa_log_trace(this->log, "%p: send process", this);
if (write(this->writefd, &cmd, 8) != 8)
@ -1319,6 +1324,7 @@ struct pw_client_node *pw_client_node_new(struct pw_resource *resource,
return NULL;
this = &impl->this;
this->status = SPA_ID_INVALID;
impl->core = core;
impl->t = pw_core_get_type(core);

View file

@ -35,6 +35,8 @@ struct pw_client_node {
struct pw_node *node;
struct pw_resource *resource;
int status;
};
struct pw_client_node *

View file

@ -688,6 +688,11 @@ static int impl_node_process(struct spa_node *node)
}
spa_log_trace(this->log, "%p: process %d", this, status);
if (status & SPA_STATUS_NEED_BUFFER)
impl->client_node->status = SPA_ID_INVALID;
else
impl->client_node->status = SPA_STATUS_HAVE_BUFFER;
return status;
}