]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Force display recalc when filter profile is loaded.
authorToni Wilen <twilen@winuae.net>
Sun, 14 Jan 2024 17:11:39 +0000 (19:11 +0200)
committerToni Wilen <twilen@winuae.net>
Sun, 14 Jan 2024 17:11:39 +0000 (19:11 +0200)
cfgfile.cpp
include/options.h
inputdevice.cpp
main.cpp
od-win32/win32gfx.cpp
od-win32/win32gui.cpp

index 3d580ea92da09586d7596d71af0ca256c2436275..e9922d2af4de1d6a5ed78a6cb78acb2c633dcbe5 100644 (file)
@@ -9899,9 +9899,13 @@ void cfgfile_get_shader_config(struct uae_prefs *p, int rtg)
 }
 #endif
 
-void set_config_changed (void)
+void set_config_changed(int flags)
 {
+       if (!config_changed) {
+               config_changed_flags = 0;
+       }
        config_changed = 1;
+       config_changed_flags |= flags;
 }
 
 void config_check_vsync (void)
@@ -9914,8 +9918,10 @@ void config_check_vsync (void)
                }
 #endif
                config_changed++;
-               if (config_changed >= 3)
+               if (config_changed >= 3) {
                        config_changed = 0;
+                       config_changed_flags = 0;
+               }
        }
 }
 
index 610ee92540b1c5e58b39878d1b1011af891fecc3..900cc613785c07d732a9caad97a292c6ce7b0123 100644 (file)
@@ -951,9 +951,9 @@ struct uae_prefs {
        int input_device_match_mask;
 };
 
-extern int config_changed;
-extern void config_check_vsync (void);
-extern void set_config_changed (void);
+extern int config_changed, config_changed_flags;
+extern void config_check_vsync(void);
+extern void set_config_changed(int flags = 0);
 
 /* Contains the filename of .uaerc */
 extern TCHAR optionsfile[];
index 7d3a052526c4f5c7ca616897b868dae43f874c5a..f8cde0e50096f3130b63f1fe3b69ce1fbf1e395f 100644 (file)
@@ -4254,6 +4254,7 @@ int handle_custom_event (const TCHAR *custom, int append)
                }
                if (!_tcsicmp (p, _T("no_config_check"))) {
                        config_changed = 0;
+                       config_changed_flags = 0;
                        maybe_config_changed = false;
                } else if (!_tcsicmp (p, _T("do_config_check"))) {
                        set_config_changed ();
index aa088e76edbabb2debf4c6f1974e03936e7d96a9..79418a5e92a3457442a2c24a947acb22ecbe4561 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -57,7 +57,7 @@
 long int version = 256 * 65536L * UAEMAJOR + 65536L * UAEMINOR + UAESUBREV;
 
 struct uae_prefs currprefs, changed_prefs;
-int config_changed;
+int config_changed, config_changed_flags;
 
 bool no_gui = 0, quit_to_gui = 0;
 bool cloanto_rom = 0;
index 7f24fdeac55226674c5985e5ce91e3b40e997f3d..de955af2c3832533635aa220ad3457825cd6de2b 100644 (file)
@@ -2126,6 +2126,9 @@ int check_prefs_changed_gfx(void)
        if (!config_changed && !display_change_requested)
                return 0;
 
+       c |= config_changed_flags;
+       config_changed_flags = 0;
+
        c |= currprefs.win32_statusbar != changed_prefs.win32_statusbar ? 512 : 0;
 
        for (int i = 0; i < MAX_AMIGADISPLAYS; i++) {
index d338bc8564d803304a8fe55da4dc97930d09341f..a398d2bb0e014e0f6ed307ea2605e249574fedc3 100644 (file)
@@ -20398,7 +20398,7 @@ static const int filtertypes[] = {
        0, 0, 0, 0,
        -1
 };     
-static void *filtervars[] = {
+static void *filtervars_wp[] = {
        &workprefs.gf[0].gfx_filter, &workprefs.gf[0].gfx_filter_filtermodeh,
        &workprefs.gf[0].gfx_filter_vert_zoom, &workprefs.gf[0].gfx_filter_horiz_zoom,
        &workprefs.gf[0].gfx_filter_vert_zoom_mult, &workprefs.gf[0].gfx_filter_horiz_zoom_mult,
@@ -20415,7 +20415,7 @@ static void *filtervars[] = {
        &workprefs.gf[0].gfx_filter_left_border, &workprefs.gf[0].gfx_filter_right_border, &workprefs.gf[0].gfx_filter_top_border, &workprefs.gf[0].gfx_filter_bottom_border,
        NULL
 };
-static void *filtervars2[] = {
+static void *filtervars_cp[] = {
        NULL, &currprefs.gf[0].gfx_filter_filtermodeh,
        &currprefs.gf[0].gfx_filter_vert_zoom, &currprefs.gf[0].gfx_filter_horiz_zoom,
        &currprefs.gf[0].gfx_filter_vert_zoom_mult, &currprefs.gf[0].gfx_filter_horiz_zoom_mult,
@@ -20912,7 +20912,7 @@ static void filter_preset (HWND hDlg, WPARAM wParam)
                        ok = 1;
        } else {
                TCHAR *p = tmp2;
-               for (i = 0; filtervars[i]; i++) {
+               for (i = 0; filtervars_wp[i]; i++) {
                        if (i > 0) {
                                _tcscat (p, _T(","));
                                p++;
@@ -20925,15 +20925,15 @@ static void filter_preset (HWND hDlg, WPARAM wParam)
 
        if (wParam == IDC_FILTERPRESETSAVE && userfilter && fkey) {
                TCHAR *p = tmp2;
-               for (i = 0; filtervars[i]; i++) {
+               for (i = 0; filtervars_wp[i]; i++) {
                        if (i > 0) {
                                _tcscat (p, _T(","));
                                p++;
                        }
                        if (filtertypes[i])
-                               _stprintf (p, _T("%f"), *((float*)filtervars[i]));
+                               _stprintf (p, _T("%f"), *((float*)filtervars_wp[i]));
                        else
-                               _stprintf (p, _T("%d"), *((int*)filtervars[i]));
+                               _stprintf (p, _T("%d"), *((int*)filtervars_wp[i]));
                        p += _tcslen (p);
                }
                if (ok == 0) {
@@ -20957,16 +20957,16 @@ static void filter_preset (HWND hDlg, WPARAM wParam)
                        _tcscat (s, _T(","));
                        t = _tcschr (s, ',');
                        *t++ = 0;
-                       for (i = 0; filtervars[i]; i++) {
+                       for (i = 0; filtervars_wp[i]; i++) {
                                if (filtertypes[i])
-                                       *((float*)filtervars[i]) = (float)_tstof (s);
+                                       *((float*)filtervars_wp[i]) = (float)_tstof (s);
                                else
-                                       *((int*)filtervars[i]) = _tstol (s);
-                               if (filtervars2[i]) {
+                                       *((int*)filtervars_wp[i]) = _tstol (s);
+                               if (filtervars_cp[i]) {
                                        if (filtertypes[i])
-                                               *((float*)filtervars2[i]) = *((float*)filtervars[i]);
+                                               *((float*)filtervars_cp[i]) = *((float*)filtervars_wp[i]);
                                        else
-                                               *((int*)filtervars2[i]) = *((int*)filtervars[i]);
+                                               *((int*)filtervars_cp[i]) = *((int*)filtervars_wp[i]);
                                }
                                s = t;
                                t = _tcschr (s, ',');
@@ -20974,6 +20974,7 @@ static void filter_preset (HWND hDlg, WPARAM wParam)
                                        break;
                                *t++ = 0;
                        }
+                       set_config_changed(4);
                }
        }
 end: