mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-24 07:00:05 -05:00
impl-node: don't do IPC from data-loop
This commit is contained in:
parent
97f95f51c5
commit
19964963d3
1 changed files with 8 additions and 8 deletions
|
|
@ -809,17 +809,9 @@ do_move_nodes(struct spa_loop *loop,
|
||||||
struct impl *impl = user_data;
|
struct impl *impl = user_data;
|
||||||
struct pw_impl_node *driver = *(struct pw_impl_node **)data;
|
struct pw_impl_node *driver = *(struct pw_impl_node **)data;
|
||||||
struct pw_impl_node *node = &impl->this;
|
struct pw_impl_node *node = &impl->this;
|
||||||
int res;
|
|
||||||
|
|
||||||
pw_log_trace("%p: driver:%p->%p", node, node->driver_node, driver);
|
pw_log_trace("%p: driver:%p->%p", node, node->driver_node, driver);
|
||||||
|
|
||||||
if ((res = spa_node_set_io(node->node,
|
|
||||||
SPA_IO_Position,
|
|
||||||
&driver->rt.activation->position,
|
|
||||||
sizeof(struct spa_io_position))) < 0) {
|
|
||||||
pw_log_debug("%p: set position: %s", node, spa_strerror(res));
|
|
||||||
}
|
|
||||||
|
|
||||||
pw_log_trace("%p: set position %p", node, &driver->rt.activation->position);
|
pw_log_trace("%p: set position %p", node, &driver->rt.activation->position);
|
||||||
node->rt.position = &driver->rt.activation->position;
|
node->rt.position = &driver->rt.activation->position;
|
||||||
|
|
||||||
|
|
@ -845,6 +837,7 @@ int pw_impl_node_set_driver(struct pw_impl_node *node, struct pw_impl_node *driv
|
||||||
{
|
{
|
||||||
struct impl *impl = SPA_CONTAINER_OF(node, struct impl, this);
|
struct impl *impl = SPA_CONTAINER_OF(node, struct impl, this);
|
||||||
struct pw_impl_node *old = node->driver_node;
|
struct pw_impl_node *old = node->driver_node;
|
||||||
|
int res;
|
||||||
|
|
||||||
if (driver == NULL)
|
if (driver == NULL)
|
||||||
driver = node;
|
driver = node;
|
||||||
|
|
@ -878,6 +871,13 @@ int pw_impl_node_set_driver(struct pw_impl_node *node, struct pw_impl_node *driv
|
||||||
node->driver_node = driver;
|
node->driver_node = driver;
|
||||||
node->moved = true;
|
node->moved = true;
|
||||||
|
|
||||||
|
if ((res = spa_node_set_io(node->node,
|
||||||
|
SPA_IO_Position,
|
||||||
|
&driver->rt.activation->position,
|
||||||
|
sizeof(struct spa_io_position))) < 0) {
|
||||||
|
pw_log_debug("%p: set position: %s", node, spa_strerror(res));
|
||||||
|
}
|
||||||
|
|
||||||
pw_loop_invoke(node->data_loop,
|
pw_loop_invoke(node->data_loop,
|
||||||
do_move_nodes, SPA_ID_INVALID, &driver, sizeof(struct pw_impl_node *),
|
do_move_nodes, SPA_ID_INVALID, &driver, sizeof(struct pw_impl_node *),
|
||||||
true, impl);
|
true, impl);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue