citra-qt: Add an "Alternative Speed Limit" with its hotkey (#5281)
* Change "Toggle Speed Limit" to toggle between 100% and a custom value This will change the shortcut for "Toggle Speed Limit" to make it swap between 100% and the value of "Limit Speed Percent" in the config. Old functionality is still there, but renamed to "Unthrottle". * Complete reimplementation of the function * Fix something that didn't get saved correctly * Fix missing indentation * Rewrite to keep only a single QSpinBox * Second rewrite * set Unthrottled to 0 in the Qspinbox * Hotkey for Unthrottle * minor improvements to the design * Apply suggestions from code review Co-authored-by: Ben <bene_thomas@web.de> * Default slider values * clang-format fixes * Prevent the speed slider from changing size ...when an element in its row has variable width. * Change "Game Speed" to "Emulation Speed" * Apply suggestions from code review `game_speed` to` emulation_speed` Co-authored-by: Valentin Vanelslande <vvanelslandedev@gmail.com> * Fix for QSliders * Revert "Prevent the speed slider from changing size" This reverts commit ddaca2004484f1e024f49d2e6dc99ef5e261f64d. * clang-format ...doesn't seem to stick to a choice * Fix 2 for QSliders Co-authored-by: B3n30 <benediktthomas@gmail.com> Co-authored-by: Ben <bene_thomas@web.de> Co-authored-by: Valentin Vanelslande <vvanelslandedev@gmail.com>
This commit is contained in:
		| @@ -133,13 +133,18 @@ void FrameLimiter::DoFrameLimiting(microseconds current_system_time_us) { | ||||
|         return; | ||||
|     } | ||||
|  | ||||
|     if (!Settings::values.use_frame_limit) { | ||||
|         return; | ||||
|     } | ||||
|  | ||||
|     auto now = Clock::now(); | ||||
|     double sleep_scale = Settings::values.frame_limit / 100.0; | ||||
|  | ||||
|     if (Settings::values.use_frame_limit_alternate) { | ||||
|         if (Settings::values.frame_limit_alternate == 0) { | ||||
|             return; | ||||
|         } | ||||
|         sleep_scale = Settings::values.frame_limit_alternate / 100.0; | ||||
|     } else if (Settings::values.frame_limit == 0) { | ||||
|         return; | ||||
|     } | ||||
|  | ||||
|     // Max lag caused by slow frames. Shouldn't be more than the length of a frame at the current | ||||
|     // speed percent or it will clamp too much and prevent this from properly limiting to that | ||||
|     // percent. High values means it'll take longer after a slow frame to recover and start limiting | ||||
|   | ||||
| @@ -83,8 +83,9 @@ void LogSettings() { | ||||
|     LogSetting("Renderer_ShadersAccurateMul", Settings::values.shaders_accurate_mul); | ||||
|     LogSetting("Renderer_UseShaderJit", Settings::values.use_shader_jit); | ||||
|     LogSetting("Renderer_UseResolutionFactor", Settings::values.resolution_factor); | ||||
|     LogSetting("Renderer_UseFrameLimit", Settings::values.use_frame_limit); | ||||
|     LogSetting("Renderer_FrameLimit", Settings::values.frame_limit); | ||||
|     LogSetting("Renderer_UseFrameLimitAlternate", Settings::values.use_frame_limit_alternate); | ||||
|     LogSetting("Renderer_FrameLimitAlternate", Settings::values.frame_limit_alternate); | ||||
|     LogSetting("Renderer_PostProcessingShader", Settings::values.pp_shader_name); | ||||
|     LogSetting("Renderer_FilterMode", Settings::values.filter_mode); | ||||
|     LogSetting("Renderer_TextureFilterName", Settings::values.texture_filter_name); | ||||
|   | ||||
| @@ -155,8 +155,9 @@ struct Values { | ||||
|     bool shaders_accurate_mul; | ||||
|     bool use_shader_jit; | ||||
|     u16 resolution_factor; | ||||
|     bool use_frame_limit; | ||||
|     bool use_frame_limit_alternate; | ||||
|     u16 frame_limit; | ||||
|     u16 frame_limit_alternate; | ||||
|     std::string texture_filter_name; | ||||
|  | ||||
|     LayoutOption layout_option; | ||||
|   | ||||
| @@ -165,9 +165,11 @@ void TelemetrySession::AddInitialInfo(Loader::AppLoader& app_loader) { | ||||
|     AddField(Telemetry::FieldType::UserConfig, "Core_UseCpuJit", Settings::values.use_cpu_jit); | ||||
|     AddField(Telemetry::FieldType::UserConfig, "Renderer_ResolutionFactor", | ||||
|              Settings::values.resolution_factor); | ||||
|     AddField(Telemetry::FieldType::UserConfig, "Renderer_UseFrameLimit", | ||||
|              Settings::values.use_frame_limit); | ||||
|     AddField(Telemetry::FieldType::UserConfig, "Renderer_FrameLimit", Settings::values.frame_limit); | ||||
|     AddField(Telemetry::FieldType::UserConfig, "Renderer_UseFrameLimitAlternate", | ||||
|              Settings::values.use_frame_limit_alternate); | ||||
|     AddField(Telemetry::FieldType::UserConfig, "Renderer_FrameLimitAlternate", | ||||
|              Settings::values.frame_limit_alternate); | ||||
|     AddField(Telemetry::FieldType::UserConfig, "Renderer_UseHwRenderer", | ||||
|              Settings::values.use_hw_renderer); | ||||
|     AddField(Telemetry::FieldType::UserConfig, "Renderer_UseHwShader", | ||||
|   | ||||
		Reference in New Issue
	
	Block a user