diff --git a/src/pipewire/context.c b/src/pipewire/context.c index c5fe3b792..7e7dd5c7e 100644 --- a/src/pipewire/context.c +++ b/src/pipewire/context.c @@ -1291,7 +1291,7 @@ again: if (n->reconfigure) running = true; - current_rate = n->current_rate.denom; + current_rate = n->target_rate.denom; if (!restore_rate && (lock_rate || n->reconfigure || !running || (!force_rate && (n->info.state > PW_NODE_STATE_IDLE)))) @@ -1318,23 +1318,23 @@ again: pw_log_info("(%s-%u) state:%s new rate:%u/(%u)->%u", n->name, n->info.id, pw_node_state_as_string(n->info.state), - n->current_rate.denom, current_rate, + n->target_rate.denom, current_rate, target_rate); if (force_rate) { if (settings->clock_rate_update_mode == CLOCK_RATE_UPDATE_MODE_HARD) - do_reconfigure = !n->current_pending; + do_reconfigure = !n->target_pending; } else { if (n->info.state >= PW_NODE_STATE_SUSPENDED) - do_reconfigure = !n->current_pending; + do_reconfigure = !n->target_pending; } if (do_reconfigure) reconfigure_driver(context, n); /* we're setting the pending rate. This will become the new * current rate in the next iteration of the graph. */ - n->current_rate = SPA_FRACTION(1, target_rate); - n->current_pending = true; + n->target_rate = SPA_FRACTION(1, target_rate); + n->target_pending = true; n->forced_rate = force_rate; current_rate = target_rate; /* we might be suspended now and the links need to be prepared again */ @@ -1365,27 +1365,27 @@ again: if (settings->clock_power_of_two_quantum) quantum = flp2(quantum); - if (running && quantum != n->current_quantum && !lock_quantum) { + if (running && quantum != n->target_quantum && !lock_quantum) { pw_log_info("(%s-%u) new quantum:%"PRIu64"->%u", n->name, n->info.id, - n->current_quantum, + n->target_quantum, quantum); /* this is the new pending quantum */ - n->current_quantum = quantum; - n->current_pending = true; + n->target_quantum = quantum; + n->target_pending = true; } - if (n->info.state < PW_NODE_STATE_RUNNING && n->current_pending) { + if (n->info.state < PW_NODE_STATE_RUNNING && n->target_pending) { /* the driver node is not actually running and we have a * pending change. Apply the change to the position now so * that we have the right values when we change the node * states of the driver and followers to RUNNING below */ pw_log_debug("%p: apply duration:%"PRIu64" rate:%u/%u", context, - n->current_quantum, n->current_rate.num, - n->current_rate.denom); - n->rt.position->clock.duration = n->current_quantum; - n->rt.position->clock.rate = n->current_rate; - n->current_pending = false; + n->target_quantum, n->target_rate.num, + n->target_rate.denom); + n->rt.position->clock.duration = n->target_quantum; + n->rt.position->clock.rate = n->target_rate; + n->target_pending = false; } pw_log_debug("%p: driver %p running:%d runnable:%d quantum:%u '%s'", diff --git a/src/pipewire/impl-node.c b/src/pipewire/impl-node.c index 917c915d3..a985f71f2 100644 --- a/src/pipewire/impl-node.c +++ b/src/pipewire/impl-node.c @@ -688,8 +688,8 @@ static void update_io(struct pw_impl_node *node) pw_log_debug("%p: set position %p", node, &node->rt.activation->position); node->rt.position = &node->rt.activation->position; - node->current_rate = node->rt.position->clock.rate; - node->current_quantum = node->rt.position->clock.duration; + node->target_rate = node->rt.position->clock.rate; + node->target_quantum = node->rt.position->clock.duration; } else if (node->driver) { pw_log_warn("%p: can't set position on driver", node); } @@ -804,8 +804,8 @@ do_move_nodes(struct spa_loop *loop, pw_log_trace("%p: set position %p", node, &driver->rt.activation->position); node->rt.position = &driver->rt.activation->position; - node->current_rate = node->rt.position->clock.rate; - node->current_quantum = node->rt.position->clock.duration; + node->target_rate = node->rt.position->clock.rate; + node->target_quantum = node->rt.position->clock.duration; if (node->source.loop != NULL) { remove_node(node); @@ -842,15 +842,15 @@ int pw_impl_node_set_driver(struct pw_impl_node *node, struct pw_impl_node *driv if (old != node && old->driving && driver->info.state < PW_NODE_STATE_RUNNING) { pw_log_info("move quantum:%"PRIu64"->%"PRIu64" rate:%d->%d (%s-%d -> %s-%d)", - driver->current_quantum, - old->current_quantum, - driver->current_rate.denom, - old->current_rate.denom, + driver->target_quantum, + old->target_quantum, + driver->target_rate.denom, + old->target_rate.denom, old->name, old->info.id, driver->name, driver->info.id); - driver->current_rate = old->current_rate; - driver->current_quantum = old->current_quantum; - driver->current_pending = true; + driver->target_rate = old->target_rate; + driver->target_quantum = old->target_quantum; + driver->target_pending = true; } was_driving = node->driving; node->driving = node->driver && driver == node; @@ -1220,11 +1220,11 @@ static void reset_position(struct pw_impl_node *this, struct spa_io_position *po uint32_t quantum = s->clock_force_quantum == 0 ? s->clock_quantum : s->clock_force_quantum; uint32_t rate = s->clock_force_rate == 0 ? s->clock_rate : s->clock_force_rate; - this->current_rate = SPA_FRACTION(1, rate); - this->current_quantum = quantum; + this->target_rate = SPA_FRACTION(1, rate); + this->target_quantum = quantum; - pos->clock.rate = this->current_rate; - pos->clock.duration = this->current_quantum; + pos->clock.rate = this->target_rate; + pos->clock.duration = this->target_quantum; pos->video.flags = SPA_IO_VIDEO_SIZE_VALID; pos->video.size = s->video_size; pos->video.stride = pos->video.size.width * 16; @@ -1683,15 +1683,15 @@ static int node_ready(void *data, int status) node->rt.target.signal_func(node->rt.target.data); } - if (node->current_pending) { + if (node->target_pending) { pw_log_debug("apply quantum %"PRIu64"->%"PRIu64" %d->%d", node->rt.position->clock.duration, - node->current_quantum, + node->target_quantum, node->rt.position->clock.rate.denom, - node->current_rate.denom); - node->rt.position->clock.duration = node->current_quantum; - node->rt.position->clock.rate = node->current_rate; - node->current_pending = false; + node->target_rate.denom); + node->rt.position->clock.duration = node->target_quantum; + node->rt.position->clock.rate = node->target_rate; + node->target_pending = false; } sync_type = check_updates(node, &reposition_owner); diff --git a/src/pipewire/private.h b/src/pipewire/private.h index b56fbf925..c9dc813fa 100644 --- a/src/pipewire/private.h +++ b/src/pipewire/private.h @@ -696,7 +696,7 @@ struct pw_impl_node { unsigned int lock_quantum:1; /**< don't change graph quantum */ unsigned int lock_rate:1; /**< don't change graph rate */ unsigned int transport_sync:1; /**< supports transport sync */ - unsigned int current_pending:1; /**< a quantum/rate update is pending */ + unsigned int target_pending:1; /**< a quantum/rate update is pending */ unsigned int moved:1; /**< the node was moved drivers */ unsigned int added:1; /**< the node was add to graph */ unsigned int pause_on_idle:1; /**< Pause processing when IDLE */ @@ -750,10 +750,10 @@ struct pw_impl_node { struct ratelimit rate_limit; } rt; - struct spa_fraction current_rate; - uint64_t current_quantum; + struct spa_fraction target_rate; + uint64_t target_quantum; - void *user_data; /**< extra user data */ + void *user_data; /**< extra user data */ }; struct pw_impl_port_mix {