mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-07 13:30:09 -05:00
parent
c59af4debc
commit
024429ea7b
1 changed files with 14 additions and 9 deletions
|
|
@ -55,9 +55,10 @@
|
||||||
struct impl {
|
struct impl {
|
||||||
struct pw_link this;
|
struct pw_link this;
|
||||||
|
|
||||||
bool prepare;
|
unsigned int prepare:1;
|
||||||
bool activated;
|
unsigned int ioset:1;
|
||||||
bool passive;
|
unsigned int activated:1;
|
||||||
|
unsigned int passive:1;
|
||||||
|
|
||||||
struct pw_work_queue *work;
|
struct pw_work_queue *work;
|
||||||
|
|
||||||
|
|
@ -756,13 +757,16 @@ int pw_link_activate(struct pw_link *this)
|
||||||
|
|
||||||
pw_link_prepare(this);
|
pw_link_prepare(this);
|
||||||
|
|
||||||
if ((res = port_set_io(this, this->output, SPA_IO_Buffers, this->io,
|
if (!impl->ioset) {
|
||||||
sizeof(struct spa_io_buffers), &this->rt.out_mix)) < 0)
|
if ((res = port_set_io(this, this->output, SPA_IO_Buffers, this->io,
|
||||||
return res;
|
sizeof(struct spa_io_buffers), &this->rt.out_mix)) < 0)
|
||||||
|
return res;
|
||||||
|
|
||||||
if ((res = port_set_io(this, this->input, SPA_IO_Buffers, this->io,
|
if ((res = port_set_io(this, this->input, SPA_IO_Buffers, this->io,
|
||||||
sizeof(struct spa_io_buffers), &this->rt.in_mix)) < 0)
|
sizeof(struct spa_io_buffers), &this->rt.in_mix)) < 0)
|
||||||
return res;
|
return res;
|
||||||
|
impl->ioset = true;
|
||||||
|
}
|
||||||
|
|
||||||
if (this->info.state == PW_LINK_STATE_PAUSED) {
|
if (this->info.state == PW_LINK_STATE_PAUSED) {
|
||||||
pw_loop_invoke(this->output->node->data_loop,
|
pw_loop_invoke(this->output->node->data_loop,
|
||||||
|
|
@ -965,6 +969,7 @@ int pw_link_deactivate(struct pw_link *this)
|
||||||
port_set_io(this, this->output, SPA_IO_Buffers, NULL, 0, &this->rt.out_mix);
|
port_set_io(this, this->output, SPA_IO_Buffers, NULL, 0, &this->rt.out_mix);
|
||||||
port_set_io(this, this->input, SPA_IO_Buffers, NULL, 0, &this->rt.in_mix);
|
port_set_io(this, this->input, SPA_IO_Buffers, NULL, 0, &this->rt.in_mix);
|
||||||
|
|
||||||
|
impl->ioset = false;
|
||||||
impl->activated = false;
|
impl->activated = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue