diff --git a/UI/GameSettingsScreen.cpp b/UI/GameSettingsScreen.cpp index d732d1ebc8..3a923214f0 100644 --- a/UI/GameSettingsScreen.cpp +++ b/UI/GameSettingsScreen.cpp @@ -93,6 +93,7 @@ GameSettingsScreen::GameSettingsScreen(const Path &gamePath, std::string gameID, : UIDialogScreenWithGameBackground(gamePath), gameID_(gameID), editThenRestore_(editThenRestore) { lastVertical_ = UseVerticalLayout(); prevInflightFrames_ = g_Config.iInflightFrames; + analogSpeedMapped_ = KeyMap::AxisFromPspButton(VIRTKEY_SPEED_ANALOG, nullptr, nullptr, nullptr); } bool GameSettingsScreen::UseVerticalLayout() const { @@ -336,7 +337,7 @@ void GameSettingsScreen::CreateViews() { altSpeed2->SetZeroLabel(gr->T("Unlimited")); altSpeed2->SetNegativeDisable(gr->T("Disabled")); - if (KeyMap::AxisFromPspButton(VIRTKEY_SPEED_ANALOG, nullptr, nullptr, nullptr)) { + if (analogSpeedMapped_) { PopupSliderChoice *analogSpeed = graphicsSettings->Add(new PopupSliderChoice(&iAlternateSpeedPercentAnalog_, 1, 1000, gr->T("Analog Alternative Speed", "Analog alternative speed (in %)"), 5, screenManager(), gr->T("%"))); altSpeed2->SetFormat("%i%%"); } @@ -1412,6 +1413,12 @@ void GameSettingsScreen::dialogFinished(const Screen *dialog, DialogResult resul RecreateViews(); } + + bool mapped = KeyMap::AxisFromPspButton(VIRTKEY_SPEED_ANALOG, nullptr, nullptr, nullptr); + if (mapped != analogSpeedMapped_) { + analogSpeedMapped_ = mapped; + RecreateViews(); + } } void GameSettingsScreen::RecreateViews() { diff --git a/UI/GameSettingsScreen.h b/UI/GameSettingsScreen.h index 2db41e2d9c..3e00c26bda 100644 --- a/UI/GameSettingsScreen.h +++ b/UI/GameSettingsScreen.h @@ -141,6 +141,7 @@ private: int prevInflightFrames_; bool enableReports_ = false; bool enableReportsSet_ = false; + bool analogSpeedMapped_ = false; std::string shaderNames_[256]; std::string searchFilter_;