Skip to content

Commit 399170a

Browse files
vo_chafa: initialize term_info, pixel, and canvas modes in the update_chafa_canvas function
1 parent 566d888 commit 399170a

1 file changed

Lines changed: 10 additions & 10 deletions

File tree

video/out/vo_chafa.c

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,10 @@ static int update_chafa_canvas(struct vo *vo, struct mp_image_params *params)
253253
if (mp_sws_reinit(priv->sws) < 0)
254254
return -1;
255255

256+
gchar **envp = g_get_environ();
257+
priv->term_info = chafa_term_db_detect(chafa_term_db_get_default (), envp);
258+
g_strfreev (envp);
259+
256260
priv->config = chafa_canvas_config_new();
257261

258262
// Set geometry based on terminal character cells
@@ -267,10 +271,16 @@ static int update_chafa_canvas(struct vo *vo, struct mp_image_params *params)
267271

268272
if (priv->opts.canvas_mode >= 0 && priv->opts.canvas_mode < CHAFA_CANVAS_MODE_MAX) {
269273
chafa_canvas_config_set_canvas_mode(priv->config, priv->opts.canvas_mode);
274+
} else {
275+
ChafaCanvasMode mode = chafa_term_info_get_best_canvas_mode(priv->term_info);
276+
chafa_canvas_config_set_canvas_mode(priv->config, mode);
270277
}
271278

272279
if (priv->opts.dither_mode >= 0 && priv->opts.dither_mode < CHAFA_DITHER_MODE_MAX) {
273280
chafa_canvas_config_set_dither_mode(priv->config, priv->opts.dither_mode);
281+
} else {
282+
ChafaPixelMode mode = chafa_term_info_get_best_pixel_mode(priv->term_info);
283+
chafa_canvas_config_set_pixel_mode(priv->config, mode);
274284
}
275285

276286
if (priv->opts.work_factor > 0) {
@@ -458,16 +468,6 @@ static int preinit(struct vo *vo)
458468
priv->config = NULL;
459469
priv->symbol_map = NULL;
460470

461-
gchar **envp = g_get_environ();
462-
priv->term_info = chafa_term_db_detect(chafa_term_db_get_default (), envp);
463-
g_strfreev (envp);
464-
465-
if (priv->opts.pixel_mode == CHAFA_PIXEL_MODE_MAX)
466-
priv->opts.pixel_mode = chafa_term_info_get_best_pixel_mode(priv->term_info);
467-
468-
if (priv->opts.canvas_mode == CHAFA_CANVAS_MODE_MAX)
469-
priv->opts.canvas_mode = chafa_term_info_get_best_canvas_mode(priv->term_info);
470-
471471
// Comment from Chafa repo
472472
/* Chafa may create and destroy GThreadPools multiple times while rendering
473473
* an image. This reduces thread churn and saves a decent amount of CPU. */

0 commit comments

Comments
 (0)