mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-04 13:30:12 -05:00
Improve pull on client-node
When we pull from the client-node, use any previously queued buffers.
This commit is contained in:
parent
9831786eb7
commit
c59bc457d4
3 changed files with 8 additions and 58 deletions
|
|
@ -775,7 +775,7 @@ static int spa_proxy_node_process_output(struct spa_node *node)
|
||||||
{
|
{
|
||||||
struct proxy *this;
|
struct proxy *this;
|
||||||
struct impl *impl;
|
struct impl *impl;
|
||||||
int i;
|
int i, res = SPA_RESULT_OK;
|
||||||
|
|
||||||
this = SPA_CONTAINER_OF(node, struct proxy, node);
|
this = SPA_CONTAINER_OF(node, struct proxy, node);
|
||||||
impl = this->impl;
|
impl = this->impl;
|
||||||
|
|
@ -783,19 +783,23 @@ static int spa_proxy_node_process_output(struct spa_node *node)
|
||||||
pw_log_trace("process output");
|
pw_log_trace("process output");
|
||||||
|
|
||||||
for (i = 0; i < MAX_OUTPUTS; i++) {
|
for (i = 0; i < MAX_OUTPUTS; i++) {
|
||||||
struct spa_port_io *io = this->out_ports[i].io;
|
struct spa_port_io *io = this->out_ports[i].io, tmp;
|
||||||
|
|
||||||
if (!io)
|
if (!io)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
tmp = impl->transport->outputs[i];
|
||||||
impl->transport->outputs[i] = *io;
|
impl->transport->outputs[i] = *io;
|
||||||
|
if (tmp.status == SPA_RESULT_HAVE_BUFFER)
|
||||||
|
res = SPA_RESULT_HAVE_BUFFER;
|
||||||
|
*io = tmp;
|
||||||
pw_log_trace("%d %d %d", io->status, io->buffer_id, io->status);
|
pw_log_trace("%d %d %d", io->status, io->buffer_id, io->status);
|
||||||
}
|
}
|
||||||
pw_transport_add_event(impl->transport,
|
pw_transport_add_event(impl->transport,
|
||||||
&SPA_EVENT_INIT(impl->core->type.event_transport.ProcessOutput));
|
&SPA_EVENT_INIT(impl->core->type.event_transport.ProcessOutput));
|
||||||
do_flush(this);
|
do_flush(this);
|
||||||
|
|
||||||
return SPA_RESULT_OK;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int handle_node_event(struct proxy *this, struct spa_event *event)
|
static int handle_node_event(struct proxy *this, struct spa_event *event)
|
||||||
|
|
|
||||||
|
|
@ -374,7 +374,6 @@ static void handle_rtnode_event(struct pw_proxy *proxy, struct spa_event *event)
|
||||||
struct node_data *data = proxy->user_data;
|
struct node_data *data = proxy->user_data;
|
||||||
struct pw_remote *remote = proxy->remote;
|
struct pw_remote *remote = proxy->remote;
|
||||||
struct spa_graph_node *n = &data->node->rt.node;
|
struct spa_graph_node *n = &data->node->rt.node;
|
||||||
int res;
|
|
||||||
|
|
||||||
if (SPA_EVENT_TYPE(event) == remote->core->type.event_transport.ProcessInput) {
|
if (SPA_EVENT_TYPE(event) == remote->core->type.event_transport.ProcessInput) {
|
||||||
struct spa_list ready;
|
struct spa_list ready;
|
||||||
|
|
@ -388,7 +387,7 @@ static void handle_rtnode_event(struct pw_proxy *proxy, struct spa_event *event)
|
||||||
spa_graph_scheduler_chain(data->node->rt.sched, &ready);
|
spa_graph_scheduler_chain(data->node->rt.sched, &ready);
|
||||||
}
|
}
|
||||||
else if (SPA_EVENT_TYPE(event) == remote->core->type.event_transport.ProcessOutput) {
|
else if (SPA_EVENT_TYPE(event) == remote->core->type.event_transport.ProcessOutput) {
|
||||||
res = n->methods->process_output(n, n->user_data);
|
n->methods->process_output(n, n->user_data);
|
||||||
}
|
}
|
||||||
else if (SPA_EVENT_TYPE(event) == remote->core->type.event_transport.ReuseBuffer) {
|
else if (SPA_EVENT_TYPE(event) == remote->core->type.event_transport.ReuseBuffer) {
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,53 +0,0 @@
|
||||||
pipewirecore_headers = [
|
|
||||||
'client.h',
|
|
||||||
'command.h',
|
|
||||||
'core.h',
|
|
||||||
'data-loop.h',
|
|
||||||
'link.h',
|
|
||||||
'main-loop.h',
|
|
||||||
'module.h',
|
|
||||||
'node.h',
|
|
||||||
'node-factory.h',
|
|
||||||
'port.h',
|
|
||||||
'remote.h',
|
|
||||||
'resource.h',
|
|
||||||
'work-queue.h',
|
|
||||||
]
|
|
||||||
|
|
||||||
pipewirecore_sources = [
|
|
||||||
'client.c',
|
|
||||||
'command.c',
|
|
||||||
'core.c',
|
|
||||||
'data-loop.c',
|
|
||||||
'link.c',
|
|
||||||
'main-loop.c',
|
|
||||||
'module.c',
|
|
||||||
'node.c',
|
|
||||||
'node-factory.c',
|
|
||||||
'port.c',
|
|
||||||
'remote.c',
|
|
||||||
'resource.c',
|
|
||||||
'work-queue.c',
|
|
||||||
]
|
|
||||||
|
|
||||||
install_headers(pipewirecore_headers, subdir : 'pipewire/server')
|
|
||||||
|
|
||||||
libpipewirecore_c_args = [
|
|
||||||
'-DHAVE_CONFIG_H',
|
|
||||||
'-D_GNU_SOURCE',
|
|
||||||
]
|
|
||||||
|
|
||||||
libpipewirecore = shared_library('pipewirecore-@0@'.format(apiversion), pipewirecore_sources,
|
|
||||||
version : libversion,
|
|
||||||
soversion : soversion,
|
|
||||||
c_args : libpipewirecore_c_args,
|
|
||||||
include_directories : [configinc, spa_inc],
|
|
||||||
link_with : spalib,
|
|
||||||
install : true,
|
|
||||||
dependencies : [mathlib, dl_lib, pipewire_dep],
|
|
||||||
)
|
|
||||||
|
|
||||||
pipewirecore_dep = declare_dependency(link_with : libpipewirecore,
|
|
||||||
include_directories : [configinc, spa_inc],
|
|
||||||
dependencies : [pipewire_dep],
|
|
||||||
)
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue