From 6ac652096d5a14972c5733668d2342594e654f49 Mon Sep 17 00:00:00 2001 From: Monroe88 Date: Thu, 11 Aug 2016 20:16:13 -0500 Subject: [PATCH] Only do SET_GEOMETRY when overscan or aspect core options are changed --- src/drivers/libretro/libretro.c | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/drivers/libretro/libretro.c b/src/drivers/libretro/libretro.c index d52ed1a..19c07b6 100644 --- a/src/drivers/libretro/libretro.c +++ b/src/drivers/libretro/libretro.c @@ -696,6 +696,7 @@ static void check_variables(void) static int overclock_state = -1; struct retro_variable var = {0}; struct retro_system_av_info av_info; + bool geometry_update = false; var.key = "fceumm_palette"; @@ -792,24 +793,31 @@ static void check_variables(void) if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) { - if (!strcmp(var.value, "enabled")) - use_overscan = false; - else if(!strcmp(var.value, "disabled")) - use_overscan = true; + bool newval = (!strcmp(var.value, "disabled")); + if (newval != use_overscan) + { + use_overscan = newval; + geometry_update = true; + } } var.key = "fceumm_aspect"; if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) { - if (!strcmp(var.value, "8:7 PAR")) - use_par = true; - else if(!strcmp(var.value, "4:3")) - use_par = false; + bool newval = (!strcmp(var.value, "8:7 PAR")); + if (newval != use_par) + { + use_par = newval; + geometry_update = true; + } } - retro_get_system_av_info(&av_info); - environ_cb(RETRO_ENVIRONMENT_SET_GEOMETRY, &av_info); + if (geometry_update) + { + retro_get_system_av_info(&av_info); + environ_cb(RETRO_ENVIRONMENT_SET_GEOMETRY, &av_info); + } } /*