@@ -47,12 +47,6 @@ static void DecodeMSAAModeValue(const QVariant& userdata, uint* multisamples, bo
4747 *ssaa = (value & (1u << 31 )) != 0u ;
4848}
4949
50- static bool IsCustomAspectRatio (const DisplayAspectRatio& ratio)
51- {
52- return std::ranges::none_of (Settings::GetPredefinedDisplayAspectRatios (),
53- [&ratio](const auto & it) { return (it == ratio); });
54- }
55-
5650GraphicsSettingsWidget::GraphicsSettingsWidget (SettingsWindow* dialog, QWidget* parent)
5751 : QWidget(parent), m_dialog(dialog)
5852{
@@ -966,6 +960,17 @@ void GraphicsSettingsWidget::populateUpscalingModes(QComboBox* const cb, int max
966960 }
967961}
968962
963+ QVariant GraphicsSettingsWidget::packAspectRatio (DisplayAspectRatio ar)
964+ {
965+ return QVariant (static_cast <uint>(ar.numerator ) << 16 | static_cast <uint>(ar.denominator ));
966+ }
967+
968+ DisplayAspectRatio GraphicsSettingsWidget::unpackAspectRatio (const QVariant& var)
969+ {
970+ const uint packed = var.toUInt ();
971+ return DisplayAspectRatio{static_cast <s16>(packed >> 16 ), static_cast <s16>(packed & 0xFFFFu )};
972+ }
973+
969974void GraphicsSettingsWidget::createAspectRatioSetting (QComboBox* const cb, QSpinBox* const numerator,
970975 QLabel* const separator, QSpinBox* const denominator,
971976 SettingsInterface* const sif)
@@ -984,7 +989,7 @@ void GraphicsSettingsWidget::createAspectRatioSetting(QComboBox* const cb, QSpin
984989 for (const DisplayAspectRatio& ratio : Settings::GetPredefinedDisplayAspectRatios ())
985990 {
986991 cb->addItem (QtUtils::StringViewToQString (Settings::GetDisplayAspectRatioDisplayName (ratio)),
987- QtUtils::StringViewToQString ( Settings::GetDisplayAspectRatioName ( ratio) ));
992+ packAspectRatio ( ratio));
988993 }
989994 cb->addItem (tr (" Custom" ));
990995
@@ -999,15 +1004,16 @@ void GraphicsSettingsWidget::createAspectRatioSetting(QComboBox* const cb, QSpin
9991004 Settings::ParseDisplayAspectRatio (sif ? sif->GetStringValue (CONFIG_SECTION, CONFIG_KEY) :
10001005 Host::GetBaseStringSettingValue (CONFIG_SECTION, CONFIG_KEY))
10011006 .value_or (Settings::DEFAULT_DISPLAY_ASPECT_RATIO);
1002- if ((is_custom_ar = IsCustomAspectRatio (ar)))
1007+ if ((is_custom_ar = std::ranges::none_of (Settings::GetPredefinedDisplayAspectRatios (),
1008+ [&ar](const auto & it) { return (it == ar); })))
10031009 {
10041010 cb->setCurrentIndex (cb->count () - 1 );
10051011 numerator->setValue (ar.numerator );
10061012 denominator->setValue (ar.denominator );
10071013 }
10081014 else
10091015 {
1010- cb->setCurrentIndex (cb->findData (QtUtils::StringViewToQString ( Settings::GetDisplayAspectRatioName (ar) )));
1016+ cb->setCurrentIndex (cb->findData (packAspectRatio (ar )));
10111017 }
10121018 }
10131019 numerator->setVisible (is_custom_ar);
@@ -1027,8 +1033,7 @@ void GraphicsSettingsWidget::createAspectRatioSetting(QComboBox* const cb, QSpin
10271033 }
10281034 else
10291035 {
1030- value_to_save.emplace (Settings::ParseDisplayAspectRatio (cb->currentData ().toString ().toStdString ())
1031- .value_or (Settings::DEFAULT_DISPLAY_ASPECT_RATIO));
1036+ value_to_save.emplace (unpackAspectRatio (cb->currentData ()));
10321037 }
10331038 }
10341039
0 commit comments