pw_link -> pw_impl_link

This commit is contained in:
Wim Taymans 2019-12-11 12:06:08 +01:00
parent 443a49947e
commit b88741dbb9
8 changed files with 134 additions and 134 deletions

View file

@ -59,7 +59,7 @@ struct factory_data {
struct link_data { struct link_data {
struct factory_data *data; struct factory_data *data;
struct spa_list l; struct spa_list l;
struct pw_link *link; struct pw_impl_link *link;
struct spa_hook link_listener; struct spa_hook link_listener;
struct pw_resource *resource; struct pw_resource *resource;
@ -115,7 +115,7 @@ static void link_initialized(void *data)
struct pw_impl_client *client = pw_resource_get_client(ld->factory_resource); struct pw_impl_client *client = pw_resource_get_client(ld->factory_resource);
int res; int res;
ld->global = pw_link_get_global(ld->link); ld->global = pw_impl_link_get_global(ld->link);
pw_global_add_listener(ld->global, &ld->global_listener, &global_events, ld); pw_global_add_listener(ld->global, &ld->global_listener, &global_events, ld);
res = pw_global_bind(ld->global, client, PW_PERM_RWX, PW_VERSION_LINK_PROXY, ld->new_id); res = pw_global_bind(ld->global, client, PW_PERM_RWX, PW_VERSION_LINK_PROXY, ld->new_id);
@ -136,8 +136,8 @@ error_bind:
pw_resource_errorf(ld->factory_resource, res, "can't bind link: %s", spa_strerror(res)); pw_resource_errorf(ld->factory_resource, res, "can't bind link: %s", spa_strerror(res));
} }
static const struct pw_link_events link_events = { static const struct pw_impl_link_events link_events = {
PW_VERSION_LINK_EVENTS, PW_VERSION_IMPL_LINK_EVENTS,
.destroy = link_destroy, .destroy = link_destroy,
.initialized = link_initialized .initialized = link_initialized
}; };
@ -183,7 +183,7 @@ static void *create_object(void *_data,
struct pw_port *outport, *inport; struct pw_port *outport, *inport;
struct pw_context *context; struct pw_context *context;
struct pw_global *global; struct pw_global *global;
struct pw_link *link; struct pw_impl_link *link;
uint32_t output_node_id, input_node_id; uint32_t output_node_id, input_node_id;
uint32_t output_port_id, input_port_id; uint32_t output_port_id, input_port_id;
struct link_data *ld; struct link_data *ld;
@ -258,14 +258,14 @@ static void *create_object(void *_data,
pw_properties_setf(properties, PW_KEY_CLIENT_ID, "%d", client->global->id); pw_properties_setf(properties, PW_KEY_CLIENT_ID, "%d", client->global->id);
link = pw_link_new(context, outport, inport, NULL, properties, sizeof(struct link_data)); link = pw_impl_link_new(context, outport, inport, NULL, properties, sizeof(struct link_data));
properties = NULL; properties = NULL;
if (link == NULL) { if (link == NULL) {
res = -errno; res = -errno;
goto error_create_link; goto error_create_link;
} }
ld = pw_link_get_user_data(link); ld = pw_impl_link_get_user_data(link);
ld->data = d; ld->data = d;
ld->factory_resource = resource; ld->factory_resource = resource;
ld->link = link; ld->link = link;
@ -273,8 +273,8 @@ static void *create_object(void *_data,
ld->linger = linger; ld->linger = linger;
spa_list_append(&d->link_list, &ld->l); spa_list_append(&d->link_list, &ld->l);
pw_link_add_listener(link, &ld->link_listener, &link_events, ld); pw_impl_link_add_listener(link, &ld->link_listener, &link_events, ld);
if ((res = pw_link_register(link, NULL)) < 0) if ((res = pw_impl_link_register(link, NULL)) < 0)
goto error_link_register; goto error_link_register;
return link; return link;
@ -332,7 +332,7 @@ static void module_destroy(void *data)
spa_hook_remove(&d->module_listener); spa_hook_remove(&d->module_listener);
spa_list_for_each_safe(ld, t, &d->link_list, l) spa_list_for_each_safe(ld, t, &d->link_list, l)
pw_link_destroy(ld->link); pw_impl_link_destroy(ld->link);
pw_impl_factory_destroy(d->this); pw_impl_factory_destroy(d->this);
} }

View file

@ -1095,7 +1095,7 @@ static int collect_nodes(struct pw_node *driver)
struct spa_list queue; struct spa_list queue;
struct pw_node *n, *t; struct pw_node *n, *t;
struct pw_port *p; struct pw_port *p;
struct pw_link *l; struct pw_impl_link *l;
uint32_t max_quantum = 0; uint32_t max_quantum = 0;
uint32_t min_quantum = 0; uint32_t min_quantum = 0;
uint32_t quantum; uint32_t quantum;

View file

@ -45,7 +45,7 @@
/** \cond */ /** \cond */
struct impl { struct impl {
struct pw_link this; struct pw_impl_link this;
unsigned int prepare:1; unsigned int prepare:1;
unsigned int io_set:1; unsigned int io_set:1;
@ -75,7 +75,7 @@ struct resource_data {
/** \endcond */ /** \endcond */
static void debug_link(struct pw_link *link) static void debug_link(struct pw_impl_link *link)
{ {
struct pw_node *in = link->input->node, *out = link->output->node; struct pw_node *in = link->input->node, *out = link->output->node;
@ -94,11 +94,11 @@ static void debug_link(struct pw_link *link)
in->idle_used_output_links); in->idle_used_output_links);
} }
static void info_changed(struct pw_link *link) static void info_changed(struct pw_impl_link *link)
{ {
struct pw_resource *resource; struct pw_resource *resource;
pw_link_emit_info_changed(link, &link->info); pw_impl_link_emit_info_changed(link, &link->info);
if (link->global) if (link->global)
spa_list_for_each(resource, &link->global->resource_list, link) spa_list_for_each(resource, &link->global->resource_list, link)
@ -107,7 +107,7 @@ static void info_changed(struct pw_link *link)
link->info.change_mask = 0; link->info.change_mask = 0;
} }
static void pw_link_update_state(struct pw_link *link, enum pw_link_state state, char *error) static void pw_impl_link_update_state(struct pw_impl_link *link, enum pw_link_state state, char *error)
{ {
enum pw_link_state old = link->info.state; enum pw_link_state old = link->info.state;
struct pw_node *in = link->input->node, *out = link->output->node; struct pw_node *in = link->input->node, *out = link->output->node;
@ -127,7 +127,7 @@ static void pw_link_update_state(struct pw_link *link, enum pw_link_state state,
free((char*)link->info.error); free((char*)link->info.error);
link->info.error = error; link->info.error = error;
pw_link_emit_state_changed(link, old, state, error); pw_impl_link_emit_state_changed(link, old, state, error);
link->info.change_mask |= PW_LINK_CHANGE_MASK_STATE; link->info.change_mask |= PW_LINK_CHANGE_MASK_STATE;
info_changed(link); info_changed(link);
@ -141,7 +141,7 @@ static void pw_link_update_state(struct pw_link *link, enum pw_link_state state,
if (++in->n_ready_input_links == in->n_used_input_links && if (++in->n_ready_input_links == in->n_used_input_links &&
in->n_ready_output_links == in->n_used_output_links) in->n_ready_output_links == in->n_used_output_links)
pw_node_set_state(in, PW_NODE_STATE_RUNNING); pw_node_set_state(in, PW_NODE_STATE_RUNNING);
pw_link_activate(link); pw_impl_link_activate(link);
} }
else if (old == PW_LINK_STATE_PAUSED && state < PW_LINK_STATE_PAUSED) { else if (old == PW_LINK_STATE_PAUSED && state < PW_LINK_STATE_PAUSED) {
if (--out->n_ready_output_links == 0 && if (--out->n_ready_output_links == 0 &&
@ -156,7 +156,7 @@ static void pw_link_update_state(struct pw_link *link, enum pw_link_state state,
static void complete_ready(void *obj, void *data, int res, uint32_t id) static void complete_ready(void *obj, void *data, int res, uint32_t id)
{ {
struct pw_port *port = obj; struct pw_port *port = obj;
struct pw_link *this = data; struct pw_impl_link *this = data;
pw_log_debug(NAME" %p: obj:%p port %p complete READY: %s", this, obj, port, spa_strerror(res)); pw_log_debug(NAME" %p: obj:%p port %p complete READY: %s", this, obj, port, spa_strerror(res));
@ -167,13 +167,13 @@ static void complete_ready(void *obj, void *data, int res, uint32_t id)
} }
if (this->input->state >= PW_PORT_STATE_READY && if (this->input->state >= PW_PORT_STATE_READY &&
this->output->state >= PW_PORT_STATE_READY) this->output->state >= PW_PORT_STATE_READY)
pw_link_update_state(this, PW_LINK_STATE_ALLOCATING, NULL); pw_impl_link_update_state(this, PW_LINK_STATE_ALLOCATING, NULL);
} }
static void complete_paused(void *obj, void *data, int res, uint32_t id) static void complete_paused(void *obj, void *data, int res, uint32_t id)
{ {
struct pw_port *port = obj; struct pw_port *port = obj;
struct pw_link *this = data; struct pw_impl_link *this = data;
struct pw_port_mix *mix = port == this->input ? &this->rt.in_mix : &this->rt.out_mix; struct pw_port_mix *mix = port == this->input ? &this->rt.in_mix : &this->rt.out_mix;
pw_log_debug(NAME" %p: obj:%p port %p complete PAUSED: %s", this, obj, port, spa_strerror(res)); pw_log_debug(NAME" %p: obj:%p port %p complete PAUSED: %s", this, obj, port, spa_strerror(res));
@ -186,10 +186,10 @@ static void complete_paused(void *obj, void *data, int res, uint32_t id)
mix->have_buffers = false; mix->have_buffers = false;
} }
if (this->rt.in_mix.have_buffers && this->rt.out_mix.have_buffers) if (this->rt.in_mix.have_buffers && this->rt.out_mix.have_buffers)
pw_link_update_state(this, PW_LINK_STATE_PAUSED, NULL); pw_impl_link_update_state(this, PW_LINK_STATE_PAUSED, NULL);
} }
static int do_negotiate(struct pw_link *this) static int do_negotiate(struct pw_impl_link *this)
{ {
struct impl *impl = SPA_CONTAINER_OF(this, struct impl, this); struct impl *impl = SPA_CONTAINER_OF(this, struct impl, this);
int res = -EIO, res2; int res = -EIO, res2;
@ -216,7 +216,7 @@ static int do_negotiate(struct pw_link *this)
if (in_state != PW_PORT_STATE_CONFIGURE && out_state != PW_PORT_STATE_CONFIGURE) if (in_state != PW_PORT_STATE_CONFIGURE && out_state != PW_PORT_STATE_CONFIGURE)
return 0; return 0;
pw_link_update_state(this, PW_LINK_STATE_NEGOTIATING, NULL); pw_impl_link_update_state(this, PW_LINK_STATE_NEGOTIATING, NULL);
input = this->input; input = this->input;
output = this->output; output = this->output;
@ -355,12 +355,12 @@ static int do_negotiate(struct pw_link *this)
return res; return res;
error: error:
pw_link_update_state(this, PW_LINK_STATE_ERROR, error); pw_impl_link_update_state(this, PW_LINK_STATE_ERROR, error);
free(format); free(format);
return res; return res;
} }
static int port_set_io(struct pw_link *this, struct pw_port *port, uint32_t id, static int port_set_io(struct pw_impl_link *this, struct pw_port *port, uint32_t id,
void *data, size_t size, struct pw_port_mix *mix) void *data, size_t size, struct pw_port_mix *mix)
{ {
int res = 0; int res = 0;
@ -383,7 +383,7 @@ static int port_set_io(struct pw_link *this, struct pw_port *port, uint32_t id,
return res; return res;
} }
static int select_io(struct pw_link *this) static int select_io(struct pw_impl_link *this)
{ {
struct impl *impl = SPA_CONTAINER_OF(this, struct impl, this); struct impl *impl = SPA_CONTAINER_OF(this, struct impl, this);
struct spa_io_buffers *io; struct spa_io_buffers *io;
@ -402,7 +402,7 @@ static int select_io(struct pw_link *this)
return 0; return 0;
} }
static int do_allocation(struct pw_link *this) static int do_allocation(struct pw_impl_link *this)
{ {
struct impl *impl = SPA_CONTAINER_OF(this, struct impl, this); struct impl *impl = SPA_CONTAINER_OF(this, struct impl, this);
int res; int res;
@ -418,7 +418,7 @@ static int do_allocation(struct pw_link *this)
pw_log_debug(NAME" %p: out-state:%d in-state:%d", this, output->state, input->state); pw_log_debug(NAME" %p: out-state:%d in-state:%d", this, output->state, input->state);
pw_link_update_state(this, PW_LINK_STATE_ALLOCATING, NULL); pw_impl_link_update_state(this, PW_LINK_STATE_ALLOCATING, NULL);
out_flags = output->spa_flags; out_flags = output->spa_flags;
in_flags = input->spa_flags; in_flags = input->spa_flags;
@ -499,7 +499,7 @@ static int do_allocation(struct pw_link *this)
error: error:
pw_buffers_clear(&output->buffers); pw_buffers_clear(&output->buffers);
pw_link_update_state(this, PW_LINK_STATE_ERROR, error); pw_impl_link_update_state(this, PW_LINK_STATE_ERROR, error);
return res; return res;
} }
@ -507,7 +507,7 @@ static int
do_activate_link(struct spa_loop *loop, do_activate_link(struct spa_loop *loop,
bool async, uint32_t seq, const void *data, size_t size, void *user_data) bool async, uint32_t seq, const void *data, size_t size, void *user_data)
{ {
struct pw_link *this = user_data; struct pw_impl_link *this = user_data;
struct impl *impl = SPA_CONTAINER_OF(this, struct impl, this); struct impl *impl = SPA_CONTAINER_OF(this, struct impl, this);
pw_log_trace(NAME" %p: activate", this); pw_log_trace(NAME" %p: activate", this);
@ -527,7 +527,7 @@ do_activate_link(struct spa_loop *loop,
return 0; return 0;
} }
int pw_link_activate(struct pw_link *this) int pw_impl_link_activate(struct pw_impl_link *this)
{ {
struct impl *impl = SPA_CONTAINER_OF(this, struct impl, this); struct impl *impl = SPA_CONTAINER_OF(this, struct impl, this);
int res; int res;
@ -537,7 +537,7 @@ int pw_link_activate(struct pw_link *this)
if (impl->activated) if (impl->activated)
return 0; return 0;
pw_link_prepare(this); pw_impl_link_prepare(this);
if (!impl->io_set) { if (!impl->io_set) {
if ((res = port_set_io(this, this->output, SPA_IO_Buffers, this->io, if ((res = port_set_io(this, this->output, SPA_IO_Buffers, this->io,
@ -559,7 +559,7 @@ int pw_link_activate(struct pw_link *this)
} }
static void check_states(void *obj, void *user_data, int res, uint32_t id) static void check_states(void *obj, void *user_data, int res, uint32_t id)
{ {
struct pw_link *this = obj; struct pw_impl_link *this = obj;
struct impl *impl = SPA_CONTAINER_OF(this, struct impl, this); struct impl *impl = SPA_CONTAINER_OF(this, struct impl, this);
int in_state, out_state; int in_state, out_state;
struct pw_port *input, *output; struct pw_port *input, *output;
@ -574,7 +574,7 @@ static void check_states(void *obj, void *user_data, int res, uint32_t id)
input = this->input; input = this->input;
if (output == NULL || input == NULL) { if (output == NULL || input == NULL) {
pw_link_update_state(this, PW_LINK_STATE_ERROR, pw_impl_link_update_state(this, PW_LINK_STATE_ERROR,
strdup(NAME" without input or output port")); strdup(NAME" without input or output port"));
return; return;
} }
@ -593,14 +593,14 @@ static void check_states(void *obj, void *user_data, int res, uint32_t id)
pw_log_debug(NAME" %p: output state %d, input state %d", this, out_state, in_state); pw_log_debug(NAME" %p: output state %d, input state %d", this, out_state, in_state);
if (out_state == PW_PORT_STATE_ERROR || in_state == PW_PORT_STATE_ERROR) { if (out_state == PW_PORT_STATE_ERROR || in_state == PW_PORT_STATE_ERROR) {
pw_link_update_state(this, PW_LINK_STATE_ERROR, strdup("ports are in error")); pw_impl_link_update_state(this, PW_LINK_STATE_ERROR, strdup("ports are in error"));
return; return;
} }
if (PW_PORT_IS_CONTROL(output) && PW_PORT_IS_CONTROL(input)) { if (PW_PORT_IS_CONTROL(output) && PW_PORT_IS_CONTROL(input)) {
pw_port_update_state(output, PW_PORT_STATE_PAUSED, NULL); pw_port_update_state(output, PW_PORT_STATE_PAUSED, NULL);
pw_port_update_state(input, PW_PORT_STATE_PAUSED, NULL); pw_port_update_state(input, PW_PORT_STATE_PAUSED, NULL);
pw_link_update_state(this, PW_LINK_STATE_PAUSED, NULL); pw_impl_link_update_state(this, PW_LINK_STATE_PAUSED, NULL);
} }
if ((res = do_negotiate(this)) != 0) if ((res = do_negotiate(this)) != 0)
@ -619,7 +619,7 @@ exit:
this, -EBUSY, (pw_work_func_t) check_states, this); this, -EBUSY, (pw_work_func_t) check_states, this);
} }
static void input_remove(struct pw_link *this, struct pw_port *port) static void input_remove(struct pw_impl_link *this, struct pw_port *port)
{ {
struct impl *impl = (struct impl *) this; struct impl *impl = (struct impl *) this;
struct pw_port_mix *mix = &this->rt.in_mix; struct pw_port_mix *mix = &this->rt.in_mix;
@ -640,7 +640,7 @@ static void input_remove(struct pw_link *this, struct pw_port *port)
this->input = NULL; this->input = NULL;
} }
static void output_remove(struct pw_link *this, struct pw_port *port) static void output_remove(struct pw_impl_link *this, struct pw_port *port)
{ {
struct impl *impl = (struct impl *) this; struct impl *impl = (struct impl *) this;
struct pw_port_mix *mix = &this->rt.out_mix; struct pw_port_mix *mix = &this->rt.out_mix;
@ -660,13 +660,13 @@ static void output_remove(struct pw_link *this, struct pw_port *port)
this->output = NULL; this->output = NULL;
} }
static void on_port_destroy(struct pw_link *this, struct pw_port *port) static void on_port_destroy(struct pw_impl_link *this, struct pw_port *port)
{ {
pw_log_debug(NAME" %p: port %p", this, port); pw_log_debug(NAME" %p: port %p", this, port);
pw_link_emit_port_unlinked(this, port); pw_impl_link_emit_port_unlinked(this, port);
pw_link_update_state(this, PW_LINK_STATE_UNLINKED, NULL); pw_impl_link_update_state(this, PW_LINK_STATE_UNLINKED, NULL);
pw_link_destroy(this); pw_impl_link_destroy(this);
} }
static void input_port_destroy(void *data) static void input_port_destroy(void *data)
@ -681,7 +681,7 @@ static void output_port_destroy(void *data)
on_port_destroy(&impl->this, impl->this.output); on_port_destroy(&impl->this, impl->this.output);
} }
int pw_link_prepare(struct pw_link *this) int pw_impl_link_prepare(struct pw_impl_link *this)
{ {
struct impl *impl = SPA_CONTAINER_OF(this, struct impl, this); struct impl *impl = SPA_CONTAINER_OF(this, struct impl, this);
@ -713,7 +713,7 @@ static int
do_deactivate_link(struct spa_loop *loop, do_deactivate_link(struct spa_loop *loop,
bool async, uint32_t seq, const void *data, size_t size, void *user_data) bool async, uint32_t seq, const void *data, size_t size, void *user_data)
{ {
struct pw_link *this = user_data; struct pw_impl_link *this = user_data;
struct impl *impl = SPA_CONTAINER_OF(this, struct impl, this); struct impl *impl = SPA_CONTAINER_OF(this, struct impl, this);
pw_log_trace(NAME" %p: disable %p and %p", this, &this->rt.in_mix, &this->rt.out_mix); pw_log_trace(NAME" %p: disable %p and %p", this, &this->rt.in_mix, &this->rt.out_mix);
@ -733,7 +733,7 @@ do_deactivate_link(struct spa_loop *loop,
return 0; return 0;
} }
int pw_link_deactivate(struct pw_link *this) int pw_impl_link_deactivate(struct pw_impl_link *this)
{ {
struct impl *impl = SPA_CONTAINER_OF(this, struct impl, this); struct impl *impl = SPA_CONTAINER_OF(this, struct impl, this);
struct pw_node *input_node, *output_node; struct pw_node *input_node, *output_node;
@ -784,7 +784,7 @@ int pw_link_deactivate(struct pw_link *this)
this->output, this->output->state, PW_PORT_STATE_PAUSED); this->output, this->output->state, PW_PORT_STATE_PAUSED);
} }
pw_link_update_state(this, PW_LINK_STATE_INIT, NULL); pw_impl_link_update_state(this, PW_LINK_STATE_INIT, NULL);
return 0; return 0;
} }
@ -804,7 +804,7 @@ static int
global_bind(void *_data, struct pw_impl_client *client, uint32_t permissions, global_bind(void *_data, struct pw_impl_client *client, uint32_t permissions,
uint32_t version, uint32_t id) uint32_t version, uint32_t id)
{ {
struct pw_link *this = _data; struct pw_impl_link *this = _data;
struct pw_global *global = this->global; struct pw_global *global = this->global;
struct pw_resource *resource; struct pw_resource *resource;
struct resource_data *data; struct resource_data *data;
@ -832,12 +832,12 @@ error_resource:
return -errno; return -errno;
} }
static void port_state_changed(struct pw_link *this, struct pw_port *port, struct pw_port *other, static void port_state_changed(struct pw_impl_link *this, struct pw_port *port, struct pw_port *other,
enum pw_port_state state, const char *error) enum pw_port_state state, const char *error)
{ {
switch (state) { switch (state) {
case PW_PORT_STATE_ERROR: case PW_PORT_STATE_ERROR:
pw_link_update_state(this, PW_LINK_STATE_ERROR, error ? strdup(error) : NULL); pw_impl_link_update_state(this, PW_LINK_STATE_ERROR, error ? strdup(error) : NULL);
break; break;
default: default:
break; break;
@ -848,7 +848,7 @@ static void input_port_state_changed(void *data, enum pw_port_state old,
enum pw_port_state state, const char *error) enum pw_port_state state, const char *error)
{ {
struct impl *impl = data; struct impl *impl = data;
struct pw_link *this = &impl->this; struct pw_impl_link *this = &impl->this;
port_state_changed(this, this->input, this->output, state, error); port_state_changed(this, this->input, this->output, state, error);
} }
@ -856,7 +856,7 @@ static void output_port_state_changed(void *data, enum pw_port_state old,
enum pw_port_state state, const char *error) enum pw_port_state state, const char *error)
{ {
struct impl *impl = data; struct impl *impl = data;
struct pw_link *this = &impl->this; struct pw_impl_link *this = &impl->this;
port_state_changed(this, this->output, this->input, state, error); port_state_changed(this, this->output, this->input, state, error);
} }
@ -916,7 +916,7 @@ static bool pw_node_can_reach(struct pw_node *output, struct pw_node *input)
return true; return true;
spa_list_for_each(p, &output->output_ports, link) { spa_list_for_each(p, &output->output_ports, link) {
struct pw_link *l; struct pw_impl_link *l;
spa_list_for_each(l, &p->links, output_link) { spa_list_for_each(l, &p->links, output_link) {
if (l->feedback) if (l->feedback)
@ -937,7 +937,7 @@ static bool pw_node_can_reach(struct pw_node *output, struct pw_node *input)
static void try_link_controls(struct impl *impl, struct pw_port *output, struct pw_port *input) static void try_link_controls(struct impl *impl, struct pw_port *output, struct pw_port *input)
{ {
struct pw_control *cin, *cout; struct pw_control *cin, *cout;
struct pw_link *this = &impl->this; struct pw_impl_link *this = &impl->this;
uint32_t omix, imix; uint32_t omix, imix;
int res; int res;
@ -965,7 +965,7 @@ static void try_link_controls(struct impl *impl, struct pw_port *output, struct
static void try_unlink_controls(struct impl *impl, struct pw_port *output, struct pw_port *input) static void try_unlink_controls(struct impl *impl, struct pw_port *output, struct pw_port *input)
{ {
struct pw_link *this = &impl->this; struct pw_impl_link *this = &impl->this;
int res; int res;
pw_log_debug(NAME" %p: unlinking controls", impl); pw_log_debug(NAME" %p: unlinking controls", impl);
@ -990,7 +990,7 @@ check_permission(struct pw_context *context,
return 0; return 0;
} }
static void permissions_changed(struct pw_link *this, struct pw_port *other, static void permissions_changed(struct pw_impl_link *this, struct pw_port *other,
struct pw_impl_client *client, uint32_t old, uint32_t new) struct pw_impl_client *client, uint32_t old, uint32_t new)
{ {
uint32_t perm; uint32_t perm;
@ -1001,7 +1001,7 @@ static void permissions_changed(struct pw_link *this, struct pw_port *other,
pw_log_debug(NAME" %p: permissions changed %08x -> %08x", this, old, new); pw_log_debug(NAME" %p: permissions changed %08x -> %08x", this, old, new);
if (check_permission(this->context, this->output, this->input, this->properties) < 0) { if (check_permission(this->context, this->output, this->input, this->properties) < 0) {
pw_link_destroy(this); pw_impl_link_destroy(this);
} else { } else {
pw_global_update_permissions(this->global, client, old, new); pw_global_update_permissions(this->global, client, old, new);
} }
@ -1010,7 +1010,7 @@ static void permissions_changed(struct pw_link *this, struct pw_port *other,
static void output_permissions_changed(void *data, static void output_permissions_changed(void *data,
struct pw_impl_client *client, uint32_t old, uint32_t new) struct pw_impl_client *client, uint32_t old, uint32_t new)
{ {
struct pw_link *this = data; struct pw_impl_link *this = data;
permissions_changed(this, this->input, client, old, new); permissions_changed(this, this->input, client, old, new);
} }
@ -1022,7 +1022,7 @@ static const struct pw_global_events output_global_events = {
static void input_permissions_changed(void *data, static void input_permissions_changed(void *data,
struct pw_impl_client *client, uint32_t old, uint32_t new) struct pw_impl_client *client, uint32_t old, uint32_t new)
{ {
struct pw_link *this = data; struct pw_impl_link *this = data;
permissions_changed(this, this->output, client, old, new); permissions_changed(this, this->output, client, old, new);
} }
@ -1032,7 +1032,7 @@ static const struct pw_global_events input_global_events = {
}; };
SPA_EXPORT SPA_EXPORT
struct pw_link *pw_link_new(struct pw_context *context, struct pw_impl_link *pw_impl_link_new(struct pw_context *context,
struct pw_port *output, struct pw_port *output,
struct pw_port *input, struct pw_port *input,
struct spa_pod *format_filter, struct spa_pod *format_filter,
@ -1040,7 +1040,7 @@ struct pw_link *pw_link_new(struct pw_context *context,
size_t user_data_size) size_t user_data_size)
{ {
struct impl *impl; struct impl *impl;
struct pw_link *this; struct pw_impl_link *this;
struct pw_node *input_node, *output_node; struct pw_node *input_node, *output_node;
const char *str; const char *str;
int res; int res;
@ -1052,7 +1052,7 @@ struct pw_link *pw_link_new(struct pw_context *context,
input->direction != PW_DIRECTION_INPUT) input->direction != PW_DIRECTION_INPUT)
goto error_wrong_direction; goto error_wrong_direction;
if (pw_link_find(output, input)) if (pw_impl_link_find(output, input))
goto error_link_exists; goto error_link_exists;
if (check_permission(context, output, input, properties) < 0) if (check_permission(context, output, input, properties) < 0)
@ -1182,10 +1182,10 @@ error_exit:
static void global_destroy(void *object) static void global_destroy(void *object)
{ {
struct pw_link *link = object; struct pw_impl_link *link = object;
spa_hook_remove(&link->global_listener); spa_hook_remove(&link->global_listener);
link->global = NULL; link->global = NULL;
pw_link_destroy(link); pw_impl_link_destroy(link);
} }
static const struct pw_global_events global_events = { static const struct pw_global_events global_events = {
@ -1194,7 +1194,7 @@ static const struct pw_global_events global_events = {
}; };
SPA_EXPORT SPA_EXPORT
int pw_link_register(struct pw_link *link, int pw_impl_link_register(struct pw_impl_link *link,
struct pw_properties *properties) struct pw_properties *properties)
{ {
struct pw_context *context = link->context; struct pw_context *context = link->context;
@ -1244,7 +1244,7 @@ int pw_link_register(struct pw_link *link,
pw_properties_setf(link->properties, PW_KEY_OBJECT_ID, "%d", link->info.id); pw_properties_setf(link->properties, PW_KEY_OBJECT_ID, "%d", link->info.id);
link->info.props = &link->properties->dict; link->info.props = &link->properties->dict;
pw_link_emit_initialized(link); pw_impl_link_emit_initialized(link);
pw_global_add_listener(link->global, &link->global_listener, &global_events, link); pw_global_add_listener(link->global, &link->global_listener, &global_events, link);
pw_global_register(link->global); pw_global_register(link->global);
@ -1254,7 +1254,7 @@ int pw_link_register(struct pw_link *link,
if ((input_node->n_used_input_links >= input_node->idle_used_input_links || if ((input_node->n_used_input_links >= input_node->idle_used_input_links ||
output_node->n_used_output_links >= output_node->idle_used_output_links) && output_node->n_used_output_links >= output_node->idle_used_output_links) &&
input_node->active && output_node->active) input_node->active && output_node->active)
pw_link_prepare(link); pw_impl_link_prepare(link);
return 0; return 0;
@ -1265,14 +1265,14 @@ error_existed:
} }
SPA_EXPORT SPA_EXPORT
void pw_link_destroy(struct pw_link *link) void pw_impl_link_destroy(struct pw_impl_link *link)
{ {
struct impl *impl = SPA_CONTAINER_OF(link, struct impl, this); struct impl *impl = SPA_CONTAINER_OF(link, struct impl, this);
pw_log_debug(NAME" %p: destroy", impl); pw_log_debug(NAME" %p: destroy", impl);
pw_link_emit_destroy(link); pw_impl_link_emit_destroy(link);
pw_link_deactivate(link); pw_impl_link_deactivate(link);
if (link->registered) if (link->registered)
spa_list_remove(&link->link); spa_list_remove(&link->link);
@ -1290,7 +1290,7 @@ void pw_link_destroy(struct pw_link *link)
} }
pw_log_debug(NAME" %p: free", impl); pw_log_debug(NAME" %p: free", impl);
pw_link_emit_free(link); pw_impl_link_emit_free(link);
pw_work_queue_destroy(impl->work); pw_work_queue_destroy(impl->work);
@ -1303,18 +1303,18 @@ void pw_link_destroy(struct pw_link *link)
} }
SPA_EXPORT SPA_EXPORT
void pw_link_add_listener(struct pw_link *link, void pw_impl_link_add_listener(struct pw_impl_link *link,
struct spa_hook *listener, struct spa_hook *listener,
const struct pw_link_events *events, const struct pw_impl_link_events *events,
void *data) void *data)
{ {
pw_log_debug(NAME" %p: add listener %p", link, listener); pw_log_debug(NAME" %p: add listener %p", link, listener);
spa_hook_list_append(&link->listener_list, listener, events, data); spa_hook_list_append(&link->listener_list, listener, events, data);
} }
struct pw_link *pw_link_find(struct pw_port *output_port, struct pw_port *input_port) struct pw_impl_link *pw_impl_link_find(struct pw_port *output_port, struct pw_port *input_port)
{ {
struct pw_link *pl; struct pw_impl_link *pl;
spa_list_for_each(pl, &output_port->links, output_link) { spa_list_for_each(pl, &output_port->links, output_link) {
if (pl->input == input_port) if (pl->input == input_port)
@ -1324,37 +1324,37 @@ struct pw_link *pw_link_find(struct pw_port *output_port, struct pw_port *input_
} }
SPA_EXPORT SPA_EXPORT
struct pw_context *pw_link_get_context(struct pw_link *link) struct pw_context *pw_impl_link_get_context(struct pw_impl_link *link)
{ {
return link->context; return link->context;
} }
SPA_EXPORT SPA_EXPORT
void *pw_link_get_user_data(struct pw_link *link) void *pw_impl_link_get_user_data(struct pw_impl_link *link)
{ {
return link->user_data; return link->user_data;
} }
SPA_EXPORT SPA_EXPORT
const struct pw_link_info *pw_link_get_info(struct pw_link *link) const struct pw_link_info *pw_impl_link_get_info(struct pw_impl_link *link)
{ {
return &link->info; return &link->info;
} }
SPA_EXPORT SPA_EXPORT
struct pw_global *pw_link_get_global(struct pw_link *link) struct pw_global *pw_impl_link_get_global(struct pw_impl_link *link)
{ {
return link->global; return link->global;
} }
SPA_EXPORT SPA_EXPORT
struct pw_port *pw_link_get_output(struct pw_link *link) struct pw_port *pw_impl_link_get_output(struct pw_impl_link *link)
{ {
return link->output; return link->output;
} }
SPA_EXPORT SPA_EXPORT
struct pw_port *pw_link_get_input(struct pw_link *link) struct pw_port *pw_impl_link_get_input(struct pw_impl_link *link)
{ {
return link->input; return link->input;
} }

View file

@ -22,18 +22,18 @@
* DEALINGS IN THE SOFTWARE. * DEALINGS IN THE SOFTWARE.
*/ */
#ifndef PIPEWIRE_LINK_H #ifndef PIPEWIRE_IMPL_LINK_H
#define PIPEWIRE_LINK_H #define PIPEWIRE_IMPL_LINK_H
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
/** \class pw_link /** \class pw_impl_link
* *
* PipeWire link object. * PipeWire link object.
*/ */
struct pw_link; struct pw_impl_link;
#include <pipewire/impl.h> #include <pipewire/impl.h>
@ -48,9 +48,9 @@ struct pw_link;
* the nodes. * the nodes.
*/ */
/** link events added with \ref pw_link_add_listener */ /** link events added with \ref pw_impl_link_add_listener */
struct pw_link_events { struct pw_impl_link_events {
#define PW_VERSION_LINK_EVENTS 0 #define PW_VERSION_IMPL_LINK_EVENTS 0
uint32_t version; uint32_t version;
/** A link is destroyed */ /** A link is destroyed */
@ -75,53 +75,53 @@ struct pw_link_events {
}; };
/** Make a new link between two ports \memberof pw_link /** Make a new link between two ports \memberof pw_impl_link
* \return a newly allocated link */ * \return a newly allocated link */
struct pw_link * struct pw_impl_link *
pw_link_new(struct pw_context *context, /**< the context object */ pw_impl_link_new(struct pw_context *context, /**< the context object */
struct pw_port *output, /**< an output port */ struct pw_port *output, /**< an output port */
struct pw_port *input, /**< an input port */ struct pw_port *input, /**< an input port */
struct spa_pod *format_filter, /**< an optional format filter */ struct spa_pod *format_filter, /**< an optional format filter */
struct pw_properties *properties /**< extra properties */, struct pw_properties *properties /**< extra properties */,
size_t user_data_size /**< extra user data size */); size_t user_data_size /**< extra user data size */);
/** Destroy a link \memberof pw_link */ /** Destroy a link \memberof pw_impl_link */
void pw_link_destroy(struct pw_link *link); void pw_impl_link_destroy(struct pw_impl_link *link);
/** Add an event listener to \a link */ /** Add an event listener to \a link */
void pw_link_add_listener(struct pw_link *link, void pw_impl_link_add_listener(struct pw_impl_link *link,
struct spa_hook *listener, struct spa_hook *listener,
const struct pw_link_events *events, const struct pw_impl_link_events *events,
void *data); void *data);
/** Finish link configuration and register */ /** Finish link configuration and register */
int pw_link_register(struct pw_link *link, /**< the link to register */ int pw_impl_link_register(struct pw_impl_link *link, /**< the link to register */
struct pw_properties *properties /**< extra properties */); struct pw_properties *properties /**< extra properties */);
/** Get the context of a link */ /** Get the context of a link */
struct pw_context *pw_link_get_context(struct pw_link *link); struct pw_context *pw_impl_link_get_context(struct pw_impl_link *link);
/** Get the user_data of a link, the size of the memory is given when /** Get the user_data of a link, the size of the memory is given when
* constructing the link */ * constructing the link */
void *pw_link_get_user_data(struct pw_link *link); void *pw_impl_link_get_user_data(struct pw_impl_link *link);
/** Get the link info */ /** Get the link info */
const struct pw_link_info *pw_link_get_info(struct pw_link *link); const struct pw_link_info *pw_impl_link_get_info(struct pw_impl_link *link);
/** Get the global of the link */ /** Get the global of the link */
struct pw_global *pw_link_get_global(struct pw_link *link); struct pw_global *pw_impl_link_get_global(struct pw_impl_link *link);
/** Get the output port of the link */ /** Get the output port of the link */
struct pw_port *pw_link_get_output(struct pw_link *link); struct pw_port *pw_impl_link_get_output(struct pw_impl_link *link);
/** Get the input port of the link */ /** Get the input port of the link */
struct pw_port *pw_link_get_input(struct pw_link *link); struct pw_port *pw_impl_link_get_input(struct pw_impl_link *link);
/** Find the link between 2 ports \memberof pw_link */ /** Find the link between 2 ports \memberof pw_impl_link */
struct pw_link *pw_link_find(struct pw_port *output, struct pw_port *input); struct pw_impl_link *pw_impl_link_find(struct pw_port *output, struct pw_port *input);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif /* PIPEWIRE_LINK_H */ #endif /* PIPEWIRE_IMPL_LINK_H */

View file

@ -75,16 +75,16 @@ struct resource_data {
static void node_deactivate(struct pw_node *this) static void node_deactivate(struct pw_node *this)
{ {
struct pw_port *port; struct pw_port *port;
struct pw_link *link; struct pw_impl_link *link;
pw_log_debug(NAME" %p: deactivate", this); pw_log_debug(NAME" %p: deactivate", this);
spa_list_for_each(port, &this->input_ports, link) { spa_list_for_each(port, &this->input_ports, link) {
spa_list_for_each(link, &port->links, input_link) spa_list_for_each(link, &port->links, input_link)
pw_link_deactivate(link); pw_impl_link_deactivate(link);
} }
spa_list_for_each(port, &this->output_ports, link) { spa_list_for_each(port, &this->output_ports, link) {
spa_list_for_each(link, &port->links, output_link) spa_list_for_each(link, &port->links, output_link)
pw_link_deactivate(link); pw_impl_link_deactivate(link);
} }
} }
@ -1734,14 +1734,14 @@ static void node_activate(struct pw_node *this)
pw_log_debug(NAME" %p: activate", this); pw_log_debug(NAME" %p: activate", this);
spa_list_for_each(port, &this->input_ports, link) { spa_list_for_each(port, &this->input_ports, link) {
struct pw_link *link; struct pw_impl_link *link;
spa_list_for_each(link, &port->links, input_link) spa_list_for_each(link, &port->links, input_link)
pw_link_activate(link); pw_impl_link_activate(link);
} }
spa_list_for_each(port, &this->output_ports, link) { spa_list_for_each(port, &this->output_ports, link) {
struct pw_link *link; struct pw_impl_link *link;
spa_list_for_each(link, &port->links, output_link) spa_list_for_each(link, &port->links, output_link)
pw_link_activate(link); pw_impl_link_activate(link);
} }
} }

View file

@ -919,9 +919,9 @@ int pw_port_add(struct pw_port *port, struct pw_node *node)
return 0; return 0;
} }
static int do_destroy_link(void *data, struct pw_link *link) static int do_destroy_link(void *data, struct pw_impl_link *link)
{ {
pw_link_destroy(link); pw_impl_link_destroy(link);
return 0; return 0;
} }
@ -1113,10 +1113,10 @@ int pw_port_for_each_filtered_param(struct pw_port *in_port,
} }
int pw_port_for_each_link(struct pw_port *port, int pw_port_for_each_link(struct pw_port *port,
int (*callback) (void *data, struct pw_link *link), int (*callback) (void *data, struct pw_impl_link *link),
void *data) void *data)
{ {
struct pw_link *l, *t; struct pw_impl_link *l, *t;
int res = 0; int res = 0;
if (port->direction == PW_DIRECTION_OUTPUT) { if (port->direction == PW_DIRECTION_OUTPUT) {

View file

@ -42,7 +42,7 @@ extern "C" {
* The port object * The port object
*/ */
struct pw_port; struct pw_port;
struct pw_link; struct pw_impl_link;
struct pw_control; struct pw_control;
#include <pipewire/impl.h> #include <pipewire/impl.h>
@ -73,10 +73,10 @@ struct pw_port_events {
void (*info_changed) (void *data, const struct pw_port_info *info); void (*info_changed) (void *data, const struct pw_port_info *info);
/** a new link is added on this port */ /** a new link is added on this port */
void (*link_added) (void *data, struct pw_link *link); void (*link_added) (void *data, struct pw_impl_link *link);
/** a link is removed from this port */ /** a link is removed from this port */
void (*link_removed) (void *data, struct pw_link *link); void (*link_removed) (void *data, struct pw_impl_link *link);
/** the state of the port changed */ /** the state of the port changed */
void (*state_changed) (void *data, enum pw_port_state old, void (*state_changed) (void *data, enum pw_port_state old,

View file

@ -585,7 +585,7 @@ struct pw_port {
struct pw_buffers buffers; /**< buffers managed by this port, only on struct pw_buffers buffers; /**< buffers managed by this port, only on
* output ports, shared with all links */ * output ports, shared with all links */
struct spa_list links; /**< list of \ref pw_link */ struct spa_list links; /**< list of \ref pw_impl_link */
struct spa_list control_list[2];/**< list of \ref pw_control indexed by direction */ struct spa_list control_list[2];/**< list of \ref pw_control indexed by direction */
@ -626,15 +626,15 @@ struct pw_control_link {
unsigned int valid:1; unsigned int valid:1;
}; };
#define pw_link_emit(o,m,v,...) spa_hook_list_call(&o->listener_list, struct pw_link_events, m, v, ##__VA_ARGS__) #define pw_impl_link_emit(o,m,v,...) spa_hook_list_call(&o->listener_list, struct pw_impl_link_events, m, v, ##__VA_ARGS__)
#define pw_link_emit_destroy(l) pw_link_emit(l, destroy, 0) #define pw_impl_link_emit_destroy(l) pw_impl_link_emit(l, destroy, 0)
#define pw_link_emit_free(l) pw_link_emit(l, free, 0) #define pw_impl_link_emit_free(l) pw_impl_link_emit(l, free, 0)
#define pw_link_emit_initialized(l) pw_link_emit(l, initialized, 0) #define pw_impl_link_emit_initialized(l) pw_impl_link_emit(l, initialized, 0)
#define pw_link_emit_info_changed(l,i) pw_link_emit(l, info_changed, 0, i) #define pw_impl_link_emit_info_changed(l,i) pw_impl_link_emit(l, info_changed, 0, i)
#define pw_link_emit_state_changed(l,...) pw_link_emit(l, state_changed, 0, __VA_ARGS__) #define pw_impl_link_emit_state_changed(l,...) pw_impl_link_emit(l, state_changed, 0, __VA_ARGS__)
#define pw_link_emit_port_unlinked(l,p) pw_link_emit(l, port_unlinked, 0, p) #define pw_impl_link_emit_port_unlinked(l,p) pw_impl_link_emit(l, port_unlinked, 0, p)
struct pw_link { struct pw_impl_link {
struct pw_context *context; /**< context object */ struct pw_context *context; /**< context object */
struct spa_list link; /**< link in context link_list */ struct spa_list link; /**< link in context link_list */
struct pw_global *global; /**< global for this link */ struct pw_global *global; /**< global for this link */
@ -966,7 +966,7 @@ int pw_port_for_each_filtered_param(struct pw_port *in_port,
* the value. When all callbacks return 0, this function returns 0 when all * the value. When all callbacks return 0, this function returns 0 when all
* items are iterated. */ * items are iterated. */
int pw_port_for_each_link(struct pw_port *port, int pw_port_for_each_link(struct pw_port *port,
int (*callback) (void *data, struct pw_link *link), int (*callback) (void *data, struct pw_impl_link *link),
void *data); void *data);
/** check is a port has links, return 0 if not, 1 if it is linked */ /** check is a port has links, return 0 if not, 1 if it is linked */
@ -993,14 +993,14 @@ int pw_node_initialized(struct pw_node *node);
int pw_node_set_driver(struct pw_node *node, struct pw_node *driver); int pw_node_set_driver(struct pw_node *node, struct pw_node *driver);
/** Prepare a link \memberof pw_link /** Prepare a link \memberof pw_impl_link
* Starts the negotiation of formats and buffers on \a link */ * Starts the negotiation of formats and buffers on \a link */
int pw_link_prepare(struct pw_link *link); int pw_impl_link_prepare(struct pw_impl_link *link);
/** starts streaming on a link */ /** starts streaming on a link */
int pw_link_activate(struct pw_link *link); int pw_impl_link_activate(struct pw_impl_link *link);
/** Deactivate a link \memberof pw_link */ /** Deactivate a link \memberof pw_impl_link */
int pw_link_deactivate(struct pw_link *link); int pw_impl_link_deactivate(struct pw_impl_link *link);
struct pw_control * struct pw_control *
pw_control_new(struct pw_context *context, pw_control_new(struct pw_context *context,