mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-04 04:06:06 -05:00
config: convert tweak.render_timer to an enum
This commit is contained in:
parent
69ec74a605
commit
891fce6236
4 changed files with 42 additions and 22 deletions
22
config.c
22
config.c
|
|
@ -2257,20 +2257,13 @@ parse_section_tweak(struct context *ctx)
|
|||
}
|
||||
|
||||
else if (strcmp(key, "render-timer") == 0) {
|
||||
int mode;
|
||||
_Static_assert(sizeof(conf->tweak.render_timer) == sizeof(int),
|
||||
"enum is not 32-bit");
|
||||
|
||||
if (!value_to_enum(
|
||||
ctx,
|
||||
(const char *[]){"none", "osd", "log", "both", NULL},
|
||||
&mode))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
xassert(0 <= mode && mode <= 3);
|
||||
conf->tweak.render_timer_osd = mode == 1 || mode == 3;
|
||||
conf->tweak.render_timer_log = mode == 2 || mode == 3;
|
||||
return true;
|
||||
return value_to_enum(
|
||||
ctx,
|
||||
(const char *[]){"none", "osd", "log", "both", NULL},
|
||||
(int *)&conf->tweak.render_timer);
|
||||
}
|
||||
|
||||
else if (strcmp(key, "delayed-render-lower") == 0) {
|
||||
|
|
@ -2820,8 +2813,7 @@ config_load(struct config *conf, const char *conf_path,
|
|||
.delayed_render_lower_ns = 500000, /* 0.5ms */
|
||||
.delayed_render_upper_ns = 16666666 / 2, /* half a frame period (60Hz) */
|
||||
.max_shm_pool_size = 512 * 1024 * 1024,
|
||||
.render_timer_osd = false,
|
||||
.render_timer_log = false,
|
||||
.render_timer = RENDER_TIMER_NONE,
|
||||
.damage_whole_window = false,
|
||||
.box_drawing_base_thickness = 0.04,
|
||||
.box_drawing_solid_shades = true,
|
||||
|
|
|
|||
8
config.h
8
config.h
|
|
@ -274,8 +274,12 @@ struct config {
|
|||
GRAPHEME_WIDTH_DOUBLE,
|
||||
GRAPHEME_WIDTH_MAX,
|
||||
} grapheme_width_method;
|
||||
bool render_timer_osd;
|
||||
bool render_timer_log;
|
||||
enum {
|
||||
RENDER_TIMER_NONE,
|
||||
RENDER_TIMER_OSD,
|
||||
RENDER_TIMER_LOG,
|
||||
RENDER_TIMER_BOTH
|
||||
} render_timer;
|
||||
bool damage_whole_window;
|
||||
uint32_t delayed_render_lower_ns;
|
||||
uint32_t delayed_render_upper_ns;
|
||||
|
|
|
|||
24
render.c
24
render.c
|
|
@ -2469,7 +2469,8 @@ grid_render(struct terminal *term)
|
|||
return;
|
||||
|
||||
struct timeval start_time, start_double_buffering = {0}, stop_double_buffering = {0};
|
||||
if (term->conf->tweak.render_timer_osd || term->conf->tweak.render_timer_log)
|
||||
|
||||
if (term->conf->tweak.render_timer != RENDER_TIMER_NONE)
|
||||
gettimeofday(&start_time, NULL);
|
||||
|
||||
xassert(term->width > 0);
|
||||
|
|
@ -2731,7 +2732,7 @@ grid_render(struct terminal *term)
|
|||
|
||||
render_scrollback_position(term);
|
||||
|
||||
if (term->conf->tweak.render_timer_osd || term->conf->tweak.render_timer_log) {
|
||||
if (term->conf->tweak.render_timer != RENDER_TIMER_NONE) {
|
||||
struct timeval end_time;
|
||||
gettimeofday(&end_time, NULL);
|
||||
|
||||
|
|
@ -2741,17 +2742,32 @@ grid_render(struct terminal *term)
|
|||
struct timeval double_buffering_time;
|
||||
timersub(&stop_double_buffering, &start_double_buffering, &double_buffering_time);
|
||||
|
||||
if (term->conf->tweak.render_timer_log) {
|
||||
switch (term->conf->tweak.render_timer) {
|
||||
case RENDER_TIMER_LOG:
|
||||
case RENDER_TIMER_BOTH:
|
||||
LOG_INFO("frame rendered in %llds %lld µs "
|
||||
"(%llds %lld µs double buffering)",
|
||||
(long long)render_time.tv_sec,
|
||||
(long long)render_time.tv_usec,
|
||||
(long long)double_buffering_time.tv_sec,
|
||||
(long long)double_buffering_time.tv_usec);
|
||||
break;
|
||||
|
||||
case RENDER_TIMER_OSD:
|
||||
case RENDER_TIMER_NONE:
|
||||
break;
|
||||
}
|
||||
|
||||
if (term->conf->tweak.render_timer_osd)
|
||||
switch (term->conf->tweak.render_timer) {
|
||||
case RENDER_TIMER_OSD:
|
||||
case RENDER_TIMER_BOTH:
|
||||
render_render_timer(term, render_time);
|
||||
break;
|
||||
|
||||
case RENDER_TIMER_LOG:
|
||||
case RENDER_TIMER_NONE:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
xassert(term->grid->offset >= 0 && term->grid->offset < term->grid->num_rows);
|
||||
|
|
|
|||
10
wayland.c
10
wayland.c
|
|
@ -1495,12 +1495,20 @@ wayl_win_init(struct terminal *term, const char *token)
|
|||
xdg_activation_v1_activate(wayl->xdg_activation, token, win->surface);
|
||||
#endif
|
||||
|
||||
if (conf->tweak.render_timer_osd) {
|
||||
switch (conf->tweak.render_timer) {
|
||||
case RENDER_TIMER_OSD:
|
||||
case RENDER_TIMER_BOTH:
|
||||
if (!wayl_win_subsurface_new(win, &win->render_timer)) {
|
||||
LOG_ERR("failed to create render timer surface");
|
||||
goto out;
|
||||
}
|
||||
break;
|
||||
|
||||
case RENDER_TIMER_NONE:
|
||||
case RENDER_TIMER_LOG:
|
||||
break;
|
||||
}
|
||||
|
||||
return win;
|
||||
|
||||
out:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue