Ensure step time is at least 1 second
When configured to perform a very quick transition, the step time for 25 kelvin may end up being less than 1 second, rounding to zero. A zero step time does not make any sense.master
parent
2e7d793bb6
commit
09c5e9a8dd
12
main.c
12
main.c
|
@ -82,6 +82,10 @@ static time_t longitude_time_offset(double longitude) {
|
||||||
return longitude * 43200 / M_PI;
|
return longitude * 43200 / M_PI;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int max(int a, int b) {
|
||||||
|
return a > b ? a : b;
|
||||||
|
}
|
||||||
|
|
||||||
struct config {
|
struct config {
|
||||||
int high_temp;
|
int high_temp;
|
||||||
int low_temp;
|
int low_temp;
|
||||||
|
@ -241,10 +245,10 @@ done:
|
||||||
ctx->condition = cond;
|
ctx->condition = cond;
|
||||||
|
|
||||||
int temp_diff = ctx->config.high_temp - ctx->config.low_temp;
|
int temp_diff = ctx->config.high_temp - ctx->config.low_temp;
|
||||||
ctx->dawn_step_time = (ctx->sun.sunrise - ctx->sun.dawn) *
|
ctx->dawn_step_time = max(1, (ctx->sun.sunrise - ctx->sun.dawn) *
|
||||||
anim_kelvin_step / temp_diff;
|
anim_kelvin_step / temp_diff);
|
||||||
ctx->dusk_step_time = (ctx->sun.dusk - ctx->sun.sunset) *
|
ctx->dusk_step_time = max(1, (ctx->sun.dusk - ctx->sun.sunset) *
|
||||||
anim_kelvin_step / temp_diff;
|
anim_kelvin_step / temp_diff);
|
||||||
|
|
||||||
print_trajectory(ctx);
|
print_trajectory(ctx);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue