@@ -954,8 +954,16 @@ struct {
954954 sk::ParameterInt* tearing_mode = nullptr ;
955955 sk::ParameterInt* latency_mode = nullptr ;
956956 sk::ParameterInt* render_queue = nullptr ;
957- sk::ParameterInt* buffer_count_old = nullptr ;
958- sk::ParameterInt* buffer_count = nullptr ;
957+ struct {
958+ sk::ParameterInt* self = nullptr ;
959+ sk::ParameterInt* old = nullptr ;
960+ bool load (int & ref) {
961+ return self->load (ref) || old->load (ref);
962+ }
963+ void store (int val) {
964+ self->store (val);
965+ }
966+ } buffer_count;
959967 sk::ParameterInt* max_delta_time = nullptr ;
960968 sk::ParameterBool* flip_discard = nullptr ;
961969 sk::ParameterBool* flip_sequential = nullptr ;
@@ -1632,6 +1640,22 @@ SK_LoadConfigEx (std::wstring name, bool create)
16321640 notify_config =
16331641 std::wstring (SK_GetInstallPath ()) + LR"( \Global\notifications.ini)" ;
16341642
1643+ //
1644+ // Create Parameters
1645+ //
1646+ struct param_decl_s {
1647+ sk::iParameter **parameter_ = nullptr ;
1648+ std::type_index type_;
1649+ const wchar_t *description_ = nullptr ;
1650+ iSK_INI *ini_ = nullptr ;
1651+ const wchar_t *section_ = nullptr ;
1652+ const wchar_t *key_ = nullptr ;
1653+ const wchar_t *key_old_ = nullptr ;
1654+ sk::iParameter **prm_old_ = nullptr ;
1655+ };
1656+
1657+ std::vector <param_decl_s> legacy_params;
1658+
16351659 if (init == FALSE || dll_ini == nullptr )
16361660 {
16371661 SK_RunOnce ( dll_ini =
@@ -1701,25 +1725,21 @@ auto DeclKeybind =
17011725 (sec), (key) \
17021726}
17031727
1728+ #define LegacyEntry (param,descrip,ini,sec,key,key_old ) {\
1729+ reinterpret_cast <sk::iParameter **> (&(param.self )), \
1730+ std::type_index ( typeid ((param.self ))),\
1731+ (descrip), (ini), \
1732+ (sec), (key), (key_old), \
1733+ reinterpret_cast <sk::iParameter **> (&(param.old )) \
1734+ }
1735+
17041736#define Keybind (bind,descrip,ini,sec ) { \
17051737 reinterpret_cast <sk::iParameter **> ((bind)), \
17061738 std::type_index ( typeid ((bind))), \
17071739 (descrip), (ini), \
17081740 (sec), ((bind)->short_name )\
17091741}
17101742
1711- //
1712- // Create Parameters
1713- //
1714- struct param_decl_s {
1715- sk::iParameter **parameter_ = nullptr ;
1716- std::type_index type_;
1717- const wchar_t *description_ = nullptr ;
1718- iSK_INI *ini_ = nullptr ;
1719- const wchar_t *section_ = nullptr ;
1720- const wchar_t *key_ = nullptr ;
1721- };
1722-
17231743 static const std::initializer_list <param_decl_s> params_to_build
17241744 // // nb: If you want any hope of reading this table, turn line wrapping off.
17251745 //
@@ -2099,8 +2119,7 @@ auto DeclKeybind =
20992119 ConfigEntry (render.framerate .last_refresh_rate , L" Refresh rate the last time framerate limit was configured." ,dll_ini, L" Render.FrameRate" , L" LastRefreshRate" ),
21002120 ConfigEntry (render.framerate .last_monitor_path , L" The monitor the last time framerate limit was configured." , dll_ini, L" Render.FrameRate" , L" LastMonitorPath" ),
21012121 ConfigEntry (render.framerate .wait_for_vblank , L" Limiter Will Wait for VBLANK" , dll_ini, L" Render.FrameRate" , L" WaitForVBLANK" ),
2102- ConfigEntry (render.framerate .buffer_count_old , L" Number of (Back)Buffers in the Swapchain" , dll_ini, L" Render.FrameRate" , L" BackBufferCount" ),
2103- ConfigEntry (render.framerate .buffer_count , L" Number of (Back)Buffers in the Swapchain" , dll_ini, L" Render.FrameRate" , L" BufferCount" ),
2122+ LegacyEntry (render.framerate .buffer_count , L" Number of (Back)Buffers in the Swapchain" , dll_ini, L" Render.FrameRate" , L" BufferCount" , L" BackBufferCount" ),
21042123 ConfigEntry (render.framerate .present_interval , L" Presentation Interval (VSYNC)" , dll_ini, L" Render.FrameRate" , L" PresentationInterval" ),
21052124 ConfigEntry (render.framerate .sync_interval_clamp , L" Maximum Sync Interval (Clamp VSYNC)" , dll_ini, L" Render.FrameRate" , L" SyncIntervalClamp" ),
21062125 ConfigEntry (render.framerate .tearing_mode , L" Tearing Mode (Always On/Off or Adaptive)" , dll_ini, L" Render.FrameRate" , L" TearingMode" ),
@@ -2413,11 +2432,20 @@ auto DeclKeybind =
24132432
24142433 for ( auto & decl : params_to_build )
24152434 {
2435+ if (decl.key_old_ != nullptr )
2436+ {
2437+ legacy_params.push_back (decl);
2438+ }
2439+
24162440 if ( decl.type_ == std::type_index ( typeid ( sk::ParameterBool* ) ) )
24172441 {
24182442 if (*decl.parameter_ == nullptr )
24192443 *decl.parameter_ =
24202444 SK_CreateINIParameter <sk::ParameterBool> (decl.description_ , decl.ini_ , decl.section_ , decl.key_ );
2445+ if ( decl.key_old_ != nullptr &&
2446+ *decl.prm_old_ == nullptr )
2447+ *decl.prm_old_ =
2448+ SK_CreateINIParameter <sk::ParameterBool> (decl.description_ , decl.ini_ , decl.section_ , decl.key_old_ );
24212449
24222450 continue ;
24232451 }
@@ -2427,6 +2455,10 @@ auto DeclKeybind =
24272455 if (*decl.parameter_ == nullptr )
24282456 *decl.parameter_ =
24292457 SK_CreateINIParameter <sk::ParameterInt> (decl.description_ , decl.ini_ , decl.section_ , decl.key_ );
2458+ if ( decl.key_old_ != nullptr &&
2459+ *decl.prm_old_ == nullptr )
2460+ *decl.prm_old_ =
2461+ SK_CreateINIParameter <sk::ParameterInt> (decl.description_ , decl.ini_ , decl.section_ , decl.key_old_ );
24302462
24312463 continue ;
24322464 }
@@ -2436,6 +2468,10 @@ auto DeclKeybind =
24362468 if (*decl.parameter_ == nullptr )
24372469 *decl.parameter_ =
24382470 SK_CreateINIParameter <sk::ParameterInt64> (decl.description_ , decl.ini_ , decl.section_ , decl.key_ );
2471+ if ( decl.key_old_ != nullptr &&
2472+ *decl.prm_old_ == nullptr )
2473+ *decl.prm_old_ =
2474+ SK_CreateINIParameter <sk::ParameterInt64> (decl.description_ , decl.ini_ , decl.section_ , decl.key_old_ );
24392475
24402476 continue ;
24412477 }
@@ -2445,6 +2481,10 @@ auto DeclKeybind =
24452481 if (*decl.parameter_ == nullptr )
24462482 *decl.parameter_ =
24472483 SK_CreateINIParameter <sk::ParameterFloat> (decl.description_ , decl.ini_ , decl.section_ , decl.key_ );
2484+ if ( decl.key_old_ != nullptr &&
2485+ *decl.prm_old_ == nullptr )
2486+ *decl.prm_old_ =
2487+ SK_CreateINIParameter <sk::ParameterFloat> (decl.description_ , decl.ini_ , decl.section_ , decl.key_old_ );
24482488
24492489 continue ;
24502490 }
@@ -2454,6 +2494,10 @@ auto DeclKeybind =
24542494 if (*decl.parameter_ == nullptr )
24552495 *decl.parameter_ =
24562496 SK_CreateINIParameter <sk::ParameterStringW> (decl.description_ , decl.ini_ , decl.section_ , decl.key_ );
2497+ if ( decl.key_old_ != nullptr &&
2498+ *decl.prm_old_ == nullptr )
2499+ *decl.prm_old_ =
2500+ SK_CreateINIParameter <sk::ParameterStringW> (decl.description_ , decl.ini_ , decl.section_ , decl.key_old_ );
24572501
24582502 continue ;
24592503 }
@@ -2463,6 +2507,10 @@ auto DeclKeybind =
24632507 if (*decl.parameter_ == nullptr )
24642508 *decl.parameter_ =
24652509 SK_CreateINIParameter <sk::ParameterVec2f> (decl.description_ , decl.ini_ , decl.section_ , decl.key_ );
2510+ if ( decl.key_old_ != nullptr &&
2511+ *decl.prm_old_ == nullptr )
2512+ *decl.prm_old_ =
2513+ SK_CreateINIParameter <sk::ParameterVec2f> (decl.description_ , decl.ini_ , decl.section_ , decl.key_old_ );
24662514
24672515 continue ;
24682516 }
@@ -5036,18 +5084,14 @@ auto DeclKeybind =
50365084 render.hdr .last_used_colorspace ->load (config.render .hdr .last_used_colorspace );
50375085
50385086 render.framerate .wait_for_vblank ->load (config.render .framerate .wait_for_vblank );
5087+ render.framerate .buffer_count .load (config.render .framerate .buffer_count );
50395088 render.framerate .prerender_limit ->load (config.render .framerate .pre_render_limit );
50405089 render.framerate .present_interval ->load (config.render .framerate .present_interval );
50415090 render.framerate .sync_interval_clamp ->load (config.render .framerate .sync_interval_clamp );
50425091 render.framerate .tearing_mode ->load (config.render .framerate .tearing_mode );
50435092 render.framerate .latency_mode ->load (config.render .framerate .latency_mode );
50445093 render.framerate .render_queue ->load (config.render .framerate .render_queue );
50455094
5046- if (! render.framerate .buffer_count ->load (config.render .framerate .buffer_count ))
5047- {
5048- render.framerate .buffer_count_old ->load (config.render .framerate .buffer_count );
5049- }
5050-
50515095 if (render.framerate .refresh_rate )
50525096 {
50535097 render.framerate .refresh_rate ->load (config.render .framerate .refresh_rate );
@@ -6643,6 +6687,19 @@ auto DeclKeybind =
66436687 }
66446688 }
66456689
6690+ if (! empty)
6691+ {
6692+ for (const auto & lp : legacy_params)
6693+ {
6694+ if (lp.ini_ != nullptr &&
6695+ lp.section_ != nullptr &&
6696+ lp.key_old_ != nullptr &&
6697+ lp.ini_ ->contains_section (lp.section_ ) &&
6698+ lp.ini_ ->get_section (lp.section_ ).contains_key (lp.key_old_ ))
6699+ lp.ini_ ->get_section (lp.section_ ).remove_key (lp.key_old_ );
6700+ }
6701+ }
6702+
66466703 return (! empty);
66476704 }
66486705
@@ -7353,7 +7410,7 @@ SK_SaveConfig ( std::wstring name,
73537410 {
73547411 render.framerate .wait_for_vblank ->store (config.render .framerate .wait_for_vblank );
73557412 render.framerate .prerender_limit ->store (config.render .framerate .pre_render_limit );
7356- render.framerate .buffer_count -> store (config.render .framerate .buffer_count );
7413+ render.framerate .buffer_count . store (config.render .framerate .buffer_count );
73577414
73587415 scheduling.priority .raise_always ->store (config.priority .raise_always );
73597416 scheduling.priority .raise_in_bg ->store (config.priority .raise_bg );
0 commit comments