settings: Port all current uses of per game settings to new class

This commit is contained in:
Zach Hilman
2018-10-17 21:17:01 -04:00
parent 7452a10688
commit 5b70c9c493
14 changed files with 35 additions and 35 deletions

View File

@@ -30,8 +30,8 @@ static Stream::Format ChannelsToStreamFormat(u32 num_channels) {
StreamPtr AudioOut::OpenStream(u32 sample_rate, u32 num_channels, std::string&& name, StreamPtr AudioOut::OpenStream(u32 sample_rate, u32 num_channels, std::string&& name,
Stream::ReleaseCallback&& release_callback) { Stream::ReleaseCallback&& release_callback) {
if (!sink) { if (!sink) {
const SinkDetails& sink_details = GetSinkDetails(Settings::values.sink_id); const SinkDetails& sink_details = GetSinkDetails(Settings::values->sink_id);
sink = sink_details.factory(Settings::values.audio_device_id); sink = sink_details.factory(Settings::values->audio_device_id);
} }
return std::make_shared<Stream>( return std::make_shared<Stream>(

View File

@@ -163,7 +163,7 @@ long CubebSinkStream::DataCallback(cubeb_stream* stream, void* user_data, const
const std::size_t samples_to_write = num_channels * num_frames; const std::size_t samples_to_write = num_channels * num_frames;
std::size_t samples_written; std::size_t samples_written;
if (Settings::values.enable_audio_stretching) { if (Settings::values->enable_audio_stretching) {
const std::vector<s16> in{impl->queue.Pop()}; const std::vector<s16> in{impl->queue.Pop()};
const std::size_t num_in{in.size() / num_channels}; const std::size_t num_in{in.size() / num_channels};
s16* const out{reinterpret_cast<s16*>(buffer)}; s16* const out{reinterpret_cast<s16*>(buffer)};

View File

@@ -63,7 +63,7 @@ s64 Stream::GetBufferReleaseCycles(const Buffer& buffer) const {
} }
static void VolumeAdjustSamples(std::vector<s16>& samples) { static void VolumeAdjustSamples(std::vector<s16>& samples) {
const float volume{std::clamp(Settings::values.volume, 0.0f, 1.0f)}; const float volume{std::clamp(Settings::values->volume, 0.0f, 1.0f)};
if (volume == 1.0f) { if (volume == 1.0f) {
return; return;

View File

@@ -427,7 +427,7 @@ void ICommonStateGetter::GetDefaultDisplayResolution(Kernel::HLERequestContext&
IPC::ResponseBuilder rb{ctx, 4}; IPC::ResponseBuilder rb{ctx, 4};
rb.Push(RESULT_SUCCESS); rb.Push(RESULT_SUCCESS);
if (Settings::values.use_docked_mode) { if (Settings::values->use_docked_mode) {
rb.Push(static_cast<u32>(Service::VI::DisplayResolution::DockedWidth)); rb.Push(static_cast<u32>(Service::VI::DisplayResolution::DockedWidth));
rb.Push(static_cast<u32>(Service::VI::DisplayResolution::DockedHeight)); rb.Push(static_cast<u32>(Service::VI::DisplayResolution::DockedHeight));
} else { } else {
@@ -439,7 +439,7 @@ void ICommonStateGetter::GetDefaultDisplayResolution(Kernel::HLERequestContext&
} }
void ICommonStateGetter::GetOperationMode(Kernel::HLERequestContext& ctx) { void ICommonStateGetter::GetOperationMode(Kernel::HLERequestContext& ctx) {
const bool use_docked_mode{Settings::values.use_docked_mode}; const bool use_docked_mode{Settings::values->use_docked_mode};
IPC::ResponseBuilder rb{ctx, 3}; IPC::ResponseBuilder rb{ctx, 3};
rb.Push(RESULT_SUCCESS); rb.Push(RESULT_SUCCESS);
rb.Push(static_cast<u8>(use_docked_mode ? OperationMode::Docked : OperationMode::Handheld)); rb.Push(static_cast<u8>(use_docked_mode ? OperationMode::Docked : OperationMode::Handheld));
@@ -448,7 +448,7 @@ void ICommonStateGetter::GetOperationMode(Kernel::HLERequestContext& ctx) {
} }
void ICommonStateGetter::GetPerformanceMode(Kernel::HLERequestContext& ctx) { void ICommonStateGetter::GetPerformanceMode(Kernel::HLERequestContext& ctx) {
const bool use_docked_mode{Settings::values.use_docked_mode}; const bool use_docked_mode{Settings::values->use_docked_mode};
IPC::ResponseBuilder rb{ctx, 3}; IPC::ResponseBuilder rb{ctx, 3};
rb.Push(RESULT_SUCCESS); rb.Push(RESULT_SUCCESS);
rb.Push(static_cast<u32>(use_docked_mode ? APM::PerformanceMode::Docked rb.Push(static_cast<u32>(use_docked_mode ? APM::PerformanceMode::Docked

View File

@@ -668,7 +668,7 @@ private:
IPC::ResponseBuilder rb{ctx, 6}; IPC::ResponseBuilder rb{ctx, 6};
rb.Push(RESULT_SUCCESS); rb.Push(RESULT_SUCCESS);
if (Settings::values.use_docked_mode) { if (Settings::values->use_docked_mode) {
rb.Push(static_cast<u32>(Service::VI::DisplayResolution::DockedWidth)); rb.Push(static_cast<u32>(Service::VI::DisplayResolution::DockedWidth));
rb.Push(static_cast<u32>(Service::VI::DisplayResolution::DockedHeight)); rb.Push(static_cast<u32>(Service::VI::DisplayResolution::DockedHeight));
} else { } else {
@@ -877,7 +877,7 @@ private:
IPC::ResponseBuilder rb{ctx, 6}; IPC::ResponseBuilder rb{ctx, 6};
rb.Push(RESULT_SUCCESS); rb.Push(RESULT_SUCCESS);
if (Settings::values.use_docked_mode) { if (Settings::values->use_docked_mode) {
rb.Push(static_cast<u64>(DisplayResolution::DockedWidth)); rb.Push(static_cast<u64>(DisplayResolution::DockedWidth));
rb.Push(static_cast<u64>(DisplayResolution::DockedHeight)); rb.Push(static_cast<u64>(DisplayResolution::DockedHeight));
} else { } else {

View File

@@ -150,8 +150,8 @@ bool AppLoader_NRO::LoadNro(const FileSys::VfsFile& file, VAddr load_base) {
codeset.segments[i].size = PageAlignSize(nro_header.segments[i].size); codeset.segments[i].size = PageAlignSize(nro_header.segments[i].size);
} }
if (!Settings::values.program_args.empty()) { if (!Settings::values->program_args.empty()) {
const auto arg_data = Settings::values.program_args; const auto arg_data = Settings::values->program_args;
codeset.DataSegment().size += NSO_ARGUMENT_DATA_ALLOCATION_SIZE; codeset.DataSegment().size += NSO_ARGUMENT_DATA_ALLOCATION_SIZE;
NSOArgumentHeader args_header{ NSOArgumentHeader args_header{
NSO_ARGUMENT_DATA_ALLOCATION_SIZE, static_cast<u32_le>(arg_data.size()), {}}; NSO_ARGUMENT_DATA_ALLOCATION_SIZE, static_cast<u32_le>(arg_data.size()), {}};

View File

@@ -122,8 +122,8 @@ std::optional<VAddr> AppLoader_NSO::LoadModule(const FileSys::VfsFile& file, VAd
codeset.segments[i].size = PageAlignSize(static_cast<u32>(data.size())); codeset.segments[i].size = PageAlignSize(static_cast<u32>(data.size()));
} }
if (should_pass_arguments && !Settings::values.program_args.empty()) { if (should_pass_arguments && !Settings::values->program_args.empty()) {
const auto arg_data = Settings::values.program_args; const auto arg_data = Settings::values->program_args;
codeset.DataSegment().size += NSO_ARGUMENT_DATA_ALLOCATION_SIZE; codeset.DataSegment().size += NSO_ARGUMENT_DATA_ALLOCATION_SIZE;
NSOArgumentHeader args_header{ NSOArgumentHeader args_header{
NSO_ARGUMENT_DATA_ALLOCATION_SIZE, static_cast<u32_le>(arg_data.size()), {}}; NSO_ARGUMENT_DATA_ALLOCATION_SIZE, static_cast<u32_le>(arg_data.size()), {}};

View File

@@ -80,7 +80,7 @@ void FrameLimiter::DoFrameLimiting(microseconds current_system_time_us) {
auto now = Clock::now(); auto now = Clock::now();
const double sleep_scale = Settings::values.frame_limit / 100.0; const double sleep_scale = Settings::values->frame_limit / 100.0;
// Max lag caused by slow frames. Shouldn't be more than the length of a frame at the current // 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 // speed percent or it will clamp too much and prevent this from properly limiting to that

View File

@@ -129,7 +129,6 @@ struct PerGameValues {
float resolution_factor; float resolution_factor;
bool use_frame_limit; bool use_frame_limit;
u16 frame_limit; u16 frame_limit;
bool use_accurate_gpu_emulation;
float bg_red; float bg_red;
float bg_green; float bg_green;
@@ -176,7 +175,7 @@ struct Values {
int language_index; int language_index;
// Renderer // Renderer
bool use_accurate_framebuffers; bool use_accurate_gpu_emulation;
// Input // Input
std::atomic_bool is_device_reload_pending{true}; std::atomic_bool is_device_reload_pending{true};

View File

@@ -152,21 +152,22 @@ TelemetrySession::TelemetrySession() {
Telemetry::AppendOSInfo(field_collection); Telemetry::AppendOSInfo(field_collection);
// Log user configuration information // Log user configuration information
AddField(Telemetry::FieldType::UserConfig, "Audio_SinkId", Settings::values.sink_id); AddField(Telemetry::FieldType::UserConfig, "Audio_SinkId", Settings::values->sink_id);
AddField(Telemetry::FieldType::UserConfig, "Audio_EnableAudioStretching", AddField(Telemetry::FieldType::UserConfig, "Audio_EnableAudioStretching",
Settings::values.enable_audio_stretching); Settings::values->enable_audio_stretching);
AddField(Telemetry::FieldType::UserConfig, "Core_UseCpuJit", Settings::values.use_cpu_jit); AddField(Telemetry::FieldType::UserConfig, "Core_UseCpuJit", Settings::values.use_cpu_jit);
AddField(Telemetry::FieldType::UserConfig, "Core_UseMultiCore", AddField(Telemetry::FieldType::UserConfig, "Core_UseMultiCore",
Settings::values.use_multi_core); Settings::values.use_multi_core);
AddField(Telemetry::FieldType::UserConfig, "Renderer_ResolutionFactor", AddField(Telemetry::FieldType::UserConfig, "Renderer_ResolutionFactor",
Settings::values.resolution_factor); Settings::values->resolution_factor);
AddField(Telemetry::FieldType::UserConfig, "Renderer_UseFrameLimit", AddField(Telemetry::FieldType::UserConfig, "Renderer_UseFrameLimit",
Settings::values.use_frame_limit); Settings::values->use_frame_limit);
AddField(Telemetry::FieldType::UserConfig, "Renderer_FrameLimit", Settings::values.frame_limit); AddField(Telemetry::FieldType::UserConfig, "Renderer_FrameLimit",
AddField(Telemetry::FieldType::UserConfig, "Renderer_UseAccurateGpuEmulation", Settings::values->frame_limit);
AddField(Telemetry::FieldType::UserConfig, "Renderer_UseAccurateFramebuffers",
Settings::values.use_accurate_gpu_emulation); Settings::values.use_accurate_gpu_emulation);
AddField(Telemetry::FieldType::UserConfig, "System_UseDockedMode", AddField(Telemetry::FieldType::UserConfig, "System_UseDockedMode",
Settings::values.use_docked_mode); Settings::values->use_docked_mode);
} }
TelemetrySession::~TelemetrySession() { TelemetrySession::~TelemetrySession() {

View File

@@ -18,7 +18,7 @@ RendererBase::~RendererBase() = default;
void RendererBase::RefreshBaseSettings() { void RendererBase::RefreshBaseSettings() {
UpdateCurrentFramebufferLayout(); UpdateCurrentFramebufferLayout();
renderer_settings.use_framelimiter = Settings::values.use_frame_limit; renderer_settings.use_framelimiter = Settings::values->use_frame_limit;
renderer_settings.set_background_color = true; renderer_settings.set_background_color = true;
} }

View File

@@ -222,7 +222,7 @@ void RendererOpenGL::LoadColorToActiveGLTexture(u8 color_r, u8 color_g, u8 color
* Initializes the OpenGL state and creates persistent objects. * Initializes the OpenGL state and creates persistent objects.
*/ */
void RendererOpenGL::InitOpenGLObjects() { void RendererOpenGL::InitOpenGLObjects() {
glClearColor(Settings::values.bg_red, Settings::values.bg_green, Settings::values.bg_blue, glClearColor(Settings::values->bg_red, Settings::values->bg_green, Settings::values->bg_blue,
0.0f); 0.0f);
// Link shaders and get variable locations // Link shaders and get variable locations
@@ -371,8 +371,8 @@ void RendererOpenGL::DrawScreenTriangles(const ScreenInfo& screen_info, float x,
void RendererOpenGL::DrawScreen() { void RendererOpenGL::DrawScreen() {
if (renderer_settings.set_background_color) { if (renderer_settings.set_background_color) {
// Update background color before drawing // Update background color before drawing
glClearColor(Settings::values.bg_red, Settings::values.bg_green, Settings::values.bg_blue, glClearColor(Settings::values->bg_red, Settings::values->bg_green,
0.0f); Settings::values->bg_blue, 0.0f);
} }
const auto& layout = render_window.GetFramebufferLayout(); const auto& layout = render_window.GetFramebufferLayout();

View File

@@ -339,21 +339,21 @@ void GMainWindow::InitializeHotkeys() {
}); });
connect(hotkey_registry.GetHotkey("Main Window", "Toggle Speed Limit", this), connect(hotkey_registry.GetHotkey("Main Window", "Toggle Speed Limit", this),
&QShortcut::activated, this, [&] { &QShortcut::activated, this, [&] {
Settings::values.use_frame_limit = !Settings::values.use_frame_limit; Settings::values->use_frame_limit = !Settings::values->use_frame_limit;
UpdateStatusBar(); UpdateStatusBar();
}); });
constexpr u16 SPEED_LIMIT_STEP = 5; constexpr u16 SPEED_LIMIT_STEP = 5;
connect(hotkey_registry.GetHotkey("Main Window", "Increase Speed Limit", this), connect(hotkey_registry.GetHotkey("Main Window", "Increase Speed Limit", this),
&QShortcut::activated, this, [&] { &QShortcut::activated, this, [&] {
if (Settings::values.frame_limit < 9999 - SPEED_LIMIT_STEP) { if (Settings::values->frame_limit < 9999 - SPEED_LIMIT_STEP) {
Settings::values.frame_limit += SPEED_LIMIT_STEP; Settings::values->frame_limit += SPEED_LIMIT_STEP;
UpdateStatusBar(); UpdateStatusBar();
} }
}); });
connect(hotkey_registry.GetHotkey("Main Window", "Decrease Speed Limit", this), connect(hotkey_registry.GetHotkey("Main Window", "Decrease Speed Limit", this),
&QShortcut::activated, this, [&] { &QShortcut::activated, this, [&] {
if (Settings::values.frame_limit > SPEED_LIMIT_STEP) { if (Settings::values->frame_limit > SPEED_LIMIT_STEP) {
Settings::values.frame_limit -= SPEED_LIMIT_STEP; Settings::values->frame_limit -= SPEED_LIMIT_STEP;
UpdateStatusBar(); UpdateStatusBar();
} }
}); });
@@ -1375,10 +1375,10 @@ void GMainWindow::UpdateStatusBar() {
auto results = Core::System::GetInstance().GetAndResetPerfStats(); auto results = Core::System::GetInstance().GetAndResetPerfStats();
if (Settings::values.use_frame_limit) { if (Settings::values->use_frame_limit) {
emu_speed_label->setText(tr("Speed: %1% / %2%") emu_speed_label->setText(tr("Speed: %1% / %2%")
.arg(results.emulation_speed * 100.0, 0, 'f', 0) .arg(results.emulation_speed * 100.0, 0, 'f', 0)
.arg(Settings::values.frame_limit)); .arg(Settings::values->frame_limit));
} else { } else {
emu_speed_label->setText(tr("Speed: %1%").arg(results.emulation_speed * 100.0, 0, 'f', 0)); emu_speed_label->setText(tr("Speed: %1%").arg(results.emulation_speed * 100.0, 0, 'f', 0));
} }

View File

@@ -135,7 +135,7 @@ int main(int argc, char** argv) {
PrintVersion(); PrintVersion();
return 0; return 0;
case 'p': case 'p':
Settings::values.program_args = argv[optind]; Settings::values->program_args = argv[optind];
++optind; ++optind;
break; break;
} }