Minor line length reduction

master
Kenny Levinsen 2020-10-21 00:41:50 +02:00
parent b9f0b8e3c0
commit 0703fbcc0e
2 changed files with 43 additions and 23 deletions

View File

@ -67,7 +67,8 @@ enum sun_condition calc_sun(struct tm *tm, double latitude, struct sun *sun) {
sun->sunrise = hour_angle_to_time(fabs(ha_daylight), eqtime); sun->sunrise = hour_angle_to_time(fabs(ha_daylight), eqtime);
sun->sunset = hour_angle_to_time(-fabs(ha_daylight), eqtime); sun->sunset = hour_angle_to_time(-fabs(ha_daylight), eqtime);
return isnan(ha_twilight) || isnan(ha_daylight) ? condition(latitude, decl) : NORMAL; return isnan(ha_twilight) || isnan(ha_daylight) ?
condition(latitude, decl) : NORMAL;
} }
static int illuminant_d(int temp, double *x, double *y) { static int illuminant_d(int temp, double *x, double *y) {

63
main.c
View File

@ -40,11 +40,13 @@ static void init_time(void) {
static time_t get_time_sec(void) { static time_t get_time_sec(void) {
struct timespec realtime; struct timespec realtime;
clock_gettime(CLOCK_REALTIME, &realtime); clock_gettime(CLOCK_REALTIME, &realtime);
time_t now = start + ((realtime.tv_sec - offset) * multiplier + realtime.tv_nsec / (1000000000 / multiplier)); time_t now = start + ((realtime.tv_sec - offset) * multiplier +
realtime.tv_nsec / (1000000000 / multiplier));
struct tm tm; struct tm tm;
localtime_r(&now, &tm); localtime_r(&now, &tm);
fprintf(stderr, "time in termina: %02d:%02d:%02d, %d/%d/%d\n", tm.tm_hour, tm.tm_min, tm.tm_sec, fprintf(stderr, "time in termina: %02d:%02d:%02d, %d/%d/%d\n",
tm.tm_mday, tm.tm_mon+1, tm.tm_year + 1900); tm.tm_hour, tm.tm_min, tm.tm_sec, tm.tm_mday,
tm.tm_mon+1, tm.tm_year + 1900);
return now; return now;
} }
static void adjust_timerspec(struct itimerspec *timerspec) { static void adjust_timerspec(struct itimerspec *timerspec) {
@ -156,10 +158,11 @@ static int anim_kelvin_step = 25;
static void recalc_stops(struct context *ctx, time_t now) { static void recalc_stops(struct context *ctx, time_t now) {
time_t day = round_day_offset(now, -ctx->longitude_time_offset); time_t day = round_day_offset(now, -ctx->longitude_time_offset);
time_t last_day = ctx->calc_day; if (day == ctx->calc_day) {
if (day == last_day) {
return; return;
} }
time_t last_day = ctx->calc_day;
ctx->calc_day = day; ctx->calc_day = day;
struct sun sun; struct sun sun;
@ -209,13 +212,16 @@ static void recalc_stops(struct context *ctx, time_t now) {
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) * anim_kelvin_step / temp_diff; ctx->dawn_step_time = (ctx->sun.sunrise - ctx->sun.dawn) *
ctx->dusk_step_time = (ctx->sun.dusk - ctx->sun.sunset) * anim_kelvin_step / temp_diff; anim_kelvin_step / temp_diff;
ctx->dusk_step_time = (ctx->sun.dusk - ctx->sun.sunset) *
anim_kelvin_step / temp_diff;
print_trajectory(ctx); print_trajectory(ctx);
} }
static int interpolate_temperature(time_t now, time_t start, time_t stop, int temp_start, int temp_stop) { static int interpolate_temperature(time_t now, time_t start, time_t stop,
int temp_start, int temp_stop) {
if (start == stop) { if (start == stop) {
return stop; return stop;
} }
@ -233,11 +239,15 @@ static int get_temperature_normal(const struct context *ctx, time_t now) {
if (now < ctx->sun.dawn) { if (now < ctx->sun.dawn) {
return ctx->config.low_temp; return ctx->config.low_temp;
} else if (now < ctx->sun.sunrise) { } else if (now < ctx->sun.sunrise) {
return interpolate_temperature(now, ctx->sun.dawn, ctx->sun.sunrise, ctx->config.low_temp, ctx->config.high_temp); return interpolate_temperature(now, ctx->sun.dawn,
ctx->sun.sunrise, ctx->config.low_temp,
ctx->config.high_temp);
} else if (now < ctx->sun.sunset) { } else if (now < ctx->sun.sunset) {
return ctx->config.high_temp; return ctx->config.high_temp;
} else if (now < ctx->sun.dusk) { } else if (now < ctx->sun.dusk) {
return interpolate_temperature(now, ctx->sun.sunset, ctx->sun.dusk, ctx->config.high_temp, ctx->config.low_temp); return interpolate_temperature(now, ctx->sun.sunset,
ctx->sun.dusk, ctx->config.high_temp,
ctx->config.low_temp);
} else { } else {
return ctx->config.low_temp; return ctx->config.low_temp;
} }
@ -262,7 +272,8 @@ static int get_temperature(const struct context *ctx, time_t now) {
case STATE_TRANSITION: case STATE_TRANSITION:
return get_temperature_transition(ctx, now); return get_temperature_transition(ctx, now);
case STATE_STATIC: case STATE_STATIC:
return ctx->condition == MIDNIGHT_SUN ? ctx->config.high_temp : ctx->config.low_temp; return ctx->condition == MIDNIGHT_SUN ? ctx->config.high_temp :
ctx->config.low_temp;
default: default:
abort(); abort();
} }
@ -465,7 +476,8 @@ static const struct wl_registry_listener registry_listener = {
.global_remove = registry_handle_global_remove, .global_remove = registry_handle_global_remove,
}; };
static void fill_gamma_table(uint16_t *table, uint32_t ramp_size, double rw, double gw, double bw, double gamma) { static void fill_gamma_table(uint16_t *table, uint32_t ramp_size, double rw,
double gw, double bw, double gamma) {
uint16_t *r = table; uint16_t *r = table;
uint16_t *g = table + ramp_size; uint16_t *g = table + ramp_size;
uint16_t *b = table + 2 * ramp_size; uint16_t *b = table + 2 * ramp_size;
@ -535,7 +547,8 @@ static int display_dispatch(struct wl_display *display, int timeout) {
if (pfd[1].revents & POLLIN) { if (pfd[1].revents & POLLIN) {
// Empty signal fd // Empty signal fd
char garbage[8]; char garbage[8];
if (read(timer_signal_fds[0], &garbage, sizeof garbage) == -1 && errno != EAGAIN) { if (read(timer_signal_fds[0], &garbage, sizeof garbage) == -1
&& errno != EAGAIN) {
return -1; return -1;
} }
} }
@ -575,20 +588,24 @@ static int setup_timer(struct context *ctx) {
.sa_flags = 0, .sa_flags = 0,
}; };
if (pipe(timer_signal_fds) == -1) { if (pipe(timer_signal_fds) == -1) {
fprintf(stderr, "could not create signal pipe: %s\n", strerror(errno)); fprintf(stderr, "could not create signal pipe: %s\n",
strerror(errno));
return -1; return -1;
} }
if (set_nonblock(timer_signal_fds[0]) == -1 || if (set_nonblock(timer_signal_fds[0]) == -1 ||
set_nonblock(timer_signal_fds[1]) == -1) { set_nonblock(timer_signal_fds[1]) == -1) {
fprintf(stderr, "could not set nonblock on signal pipe: %s\n", strerror(errno)); fprintf(stderr, "could not set nonblock on signal pipe: %s\n",
strerror(errno));
return -1; return -1;
} }
if (sigaction(SIGALRM, &timer_action, NULL) == -1) { if (sigaction(SIGALRM, &timer_action, NULL) == -1) {
fprintf(stderr, "could not configure alarm handler: %s\n", strerror(errno)); fprintf(stderr, "could not configure alarm handler: %s\n",
strerror(errno));
return -1; return -1;
} }
if (timer_create(CLOCK_REALTIME, NULL, &ctx->timer) == -1) { if (timer_create(CLOCK_REALTIME, NULL, &ctx->timer) == -1) {
fprintf(stderr, "could not configure timer: %s\n", strerror(errno)); fprintf(stderr, "could not configure timer: %s\n",
strerror(errno));
return -1; return -1;
} }
return 0; return 0;
@ -622,8 +639,7 @@ static int wlrun(struct config cfg) {
wl_display_roundtrip(display); wl_display_roundtrip(display);
if (gamma_control_manager == NULL) { if (gamma_control_manager == NULL) {
fprintf(stderr, fprintf(stderr, "compositor doesn't support wlr-gamma-control-unstable-v1\n");
"compositor doesn't support wlr-gamma-control-unstable-v1\n");
return EXIT_FAILURE; return EXIT_FAILURE;
} }
@ -652,7 +668,8 @@ static int wlrun(struct config cfg) {
if ((temp = get_temperature(&ctx, now)) != old_temp) { if ((temp = get_temperature(&ctx, now)) != old_temp) {
old_temp = temp; old_temp = temp;
ctx.new_output = false; ctx.new_output = false;
set_temperature(&ctx.outputs, temp, ctx.config.gamma); set_temperature(&ctx.outputs, temp,
ctx.config.gamma);
} }
} else if (ctx.new_output) { } else if (ctx.new_output) {
ctx.new_output = false; ctx.new_output = false;
@ -717,12 +734,14 @@ int main(int argc, char *argv[]) {
return -1; return -1;
} }
if (config.latitude > 90.0 || config.latitude < -90.0) { if (config.latitude > 90.0 || config.latitude < -90.0) {
fprintf(stderr, "latitude (%lf) must be in interval [-90,90]\n", config.latitude); fprintf(stderr, "latitude (%lf) must be in interval [-90,90]\n",
config.latitude);
return EXIT_FAILURE; return EXIT_FAILURE;
} }
config.latitude = RADIANS(config.latitude); config.latitude = RADIANS(config.latitude);
if (config.longitude > 180.0 || config.longitude < -180.0) { if (config.longitude > 180.0 || config.longitude < -180.0) {
fprintf(stderr, "longitude (%lf) must be in interval [-180,180]\n", config.longitude); fprintf(stderr, "longitude (%lf) must be in interval [-180,180]\n",
config.longitude);
return EXIT_FAILURE; return EXIT_FAILURE;
} }
config.longitude = RADIANS(config.longitude); config.longitude = RADIANS(config.longitude);