| 18 | static constexpr u32 DEFAULT_FRAME_LATENCY = 2; |
| 19 | |
| 20 | EmulationSettingsWidget::EmulationSettingsWidget(SettingsWindow* settings_dialog, QWidget* parent) |
| 21 | : SettingsWidget(settings_dialog, parent) |
| 22 | { |
| 23 | SettingsInterface* sif = dialog()->getSettingsInterface(); |
| 24 | |
| 25 | setupTab(m_ui); |
| 26 | |
| 27 | initializeSpeedCombo(m_ui.normalSpeed, "Framerate", "NominalScalar", 1.0f); |
| 28 | initializeSpeedCombo(m_ui.fastForwardSpeed, "Framerate", "TurboScalar", 2.0f); |
| 29 | initializeSpeedCombo(m_ui.slowMotionSpeed, "Framerate", "SlomoScalar", 0.5f); |
| 30 | |
| 31 | SettingWidgetBinder::BindWidgetToIntSetting(sif, m_ui.maxFrameLatency, "EmuCore/GS", "VsyncQueueSize", DEFAULT_FRAME_LATENCY); |
| 32 | SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.vsync, "EmuCore/GS", "VsyncEnable", false); |
| 33 | SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.syncToHostRefreshRate, "EmuCore/GS", "SyncToHostRefreshRate", false); |
| 34 | SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.useVSyncForTiming, "EmuCore/GS", "UseVSyncForTiming", false); |
| 35 | SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.skipPresentingDuplicateFrames, "EmuCore/GS", "SkipDuplicateFrames", true); |
| 36 | connect(m_ui.optimalFramePacing, &QCheckBox::checkStateChanged, this, &EmulationSettingsWidget::onOptimalFramePacingChanged); |
| 37 | connect(m_ui.vsync, &QCheckBox::checkStateChanged, this, &EmulationSettingsWidget::updateUseVSyncForTimingEnabled); |
| 38 | connect(m_ui.syncToHostRefreshRate, &QCheckBox::checkStateChanged, this, &EmulationSettingsWidget::updateUseVSyncForTimingEnabled); |
| 39 | m_ui.optimalFramePacing->setTristate(dialog()->isPerGameSettings()); |
| 40 | |
| 41 | SettingWidgetBinder::BindWidgetToIntSetting(sif, m_ui.eeCycleSkipping, "EmuCore/Speedhacks", "EECycleSkip", DEFAULT_EE_CYCLE_SKIP); |
| 42 | |
| 43 | SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.MTVU, "EmuCore/Speedhacks", "vuThread", false); |
| 44 | SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.threadPinning, "EmuCore", "EnableThreadPinning", false); |
| 45 | SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.fastCDVD, "EmuCore/Speedhacks", "fastCDVD", false); |
| 46 | SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.precacheCDVD, "EmuCore", "CdvdPrecache", false); |
| 47 | |
| 48 | if (dialog()->isPerGameSettings()) |
| 49 | { |
| 50 | SettingWidgetBinder::DateTimeKeys rtc_keys; |
| 51 | rtc_keys.year = "RtcYear"; |
| 52 | rtc_keys.month = "RtcMonth"; |
| 53 | rtc_keys.day = "RtcDay"; |
| 54 | rtc_keys.hour = "RtcHour"; |
| 55 | rtc_keys.minute = "RtcMinute"; |
| 56 | rtc_keys.second = "RtcSecond"; |
| 57 | |
| 58 | SettingWidgetBinder::BindWidgetToDateTimeSetting(sif, m_ui.rtcDateTime, "EmuCore", rtc_keys); |
| 59 | m_ui.rtcDateTime->setDateRange(QDate(2000, 1, 1), QDate(2099, 12, 31)); |
| 60 | SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.manuallySetRealTimeClock, "EmuCore", "ManuallySetRealTimeClock", false); |
| 61 | connect(m_ui.manuallySetRealTimeClock, &QCheckBox::checkStateChanged, this, &EmulationSettingsWidget::onManuallySetRealTimeClockChanged); |
| 62 | SettingWidgetBinder::BindWidgetToBoolSetting(sif, m_ui.rtcUseSystemLocaleFormat, "EmuCore", "UseSystemLocaleFormat", false); |
| 63 | connect(m_ui.rtcUseSystemLocaleFormat, &QCheckBox::checkStateChanged, this, &EmulationSettingsWidget::onUseSystemLocaleFormatChanged); |
| 64 | EmulationSettingsWidget::onManuallySetRealTimeClockChanged(); |
| 65 | EmulationSettingsWidget::onUseSystemLocaleFormatChanged(); |
| 66 | |
| 67 | m_ui.eeCycleRate->insertItem(0, |
| 68 | tr("Use Global Setting [%1]") |
| 69 | .arg(m_ui.eeCycleRate->itemText( |
| 70 | std::clamp(Host::GetBaseIntSettingValue("EmuCore/Speedhacks", "EECycleRate", DEFAULT_EE_CYCLE_RATE) - MINIMUM_EE_CYCLE_RATE, |
| 71 | 0, MAXIMUM_EE_CYCLE_RATE - MINIMUM_EE_CYCLE_RATE)))); |
| 72 | |
| 73 | // Disable cheats, use the cheats panel instead |
| 74 | m_ui.systemSettingsLayout->removeWidget(m_ui.cheats); |
| 75 | m_ui.cheats->hide(); |
| 76 | } |
| 77 | else |
nothing calls this directly
no test coverage detected