context: rename current_quantum/rate to target_*

They are really the target rate and quantum that we would like to
have and are only current after target_pending is false.
This commit is contained in:
Wim Taymans 2023-03-23 17:20:01 +01:00
parent 25f5165e4c
commit 87d64f5cad
3 changed files with 41 additions and 41 deletions

View file

@ -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'",

View file

@ -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);

View file

@ -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 {