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