From dbe61af543c20283823d009f0155a9ec13ad1440 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Tue, 14 Dec 2021 17:05:38 +0100 Subject: [PATCH] impl-node: don't update rt.position directly When moving a driver to another, move the quantum and rate to the current_ fields so that they are applied when the next cycle starts instead of during the cycle. --- src/pipewire/impl-node.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pipewire/impl-node.c b/src/pipewire/impl-node.c index 748a67752..25b606a25 100644 --- a/src/pipewire/impl-node.c +++ b/src/pipewire/impl-node.c @@ -812,11 +812,11 @@ int pw_impl_node_set_driver(struct pw_impl_node *node, struct pw_impl_node *driv remove_segment_owner(old, node->info.id); if (old != node && old->driving && driver->info.state < PW_NODE_STATE_RUNNING) { - driver->rt.activation->position.clock.rate = old->rt.position->clock.rate; - driver->rt.activation->position.clock.duration = old->rt.position->clock.duration; + driver->current_rate = old->current_rate; + driver->current_quantum = old->current_quantum; pw_log_info("move quantum:%"PRIu64" rate:%d (%s-%d -> %s-%d)", - driver->rt.activation->position.clock.duration, - driver->rt.activation->position.clock.rate.denom, + driver->current_quantum, + driver->current_rate.denom, old->name, old->info.id, driver->name, driver->info.id); }