From ca9701f06655749e04c9169d68077675a026b6ba Mon Sep 17 00:00:00 2001 From: Stefan Reinauer Date: Sun, 21 Jun 2026 11:43:34 -0700 Subject: [PATCH] qt: stop adding uaescsimode on config save Only write uaescsimode when the loaded config already contained that key. This keeps A4091 controller configs from gaining SCSIEMU during a roundtrip and adds smoke coverage for the A4091 HD/CD mount shape. --- od-unix/qt/launcher.cpp | 17 ++++++++++++++++- tools/unix-smoke-config-roundtrip.sh | 21 +++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/od-unix/qt/launcher.cpp b/od-unix/qt/launcher.cpp index b7106847..edd406b7 100644 --- a/od-unix/qt/launcher.cpp +++ b/od-unix/qt/launcher.cpp @@ -14999,6 +14999,18 @@ private: rtgMonitor->setCurrentText(QStringLiteral("1")); } + QString loadedScsiModeConfigKey() const + { + const WinUaeQtConfig::Settings &settings = loadedConfig.settings(); + if (settings.contains(QStringLiteral("unix.uaescsimode"))) { + return QStringLiteral("unix.uaescsimode"); + } + if (settings.contains(QStringLiteral("uaescsimode"))) { + return QStringLiteral("uaescsimode"); + } + return QString(); + } + WinUaeQtConfig::Settings currentSettings() const { WinUaeQtConfig::Settings settings; @@ -15418,7 +15430,10 @@ private: } settings.insert(QStringLiteral("bsdsocket_emu"), expansionBsdsocket->isEnabled() && expansionBsdsocket->isChecked() ? QStringLiteral("true") : QStringLiteral("false")); settings.insert(QStringLiteral("scsi"), expansionScsiDevice->isEnabled() && expansionScsiDevice->isChecked() ? QStringLiteral("true") : QStringLiteral("false")); - settings.insert(QStringLiteral("uaescsimode"), configChoiceValue(scsiModeChoices, int(sizeof(scsiModeChoices) / sizeof(scsiModeChoices[0])), miscScsiMode->currentText())); + const QString scsiModeKey = loadedScsiModeConfigKey(); + if (!scsiModeKey.isEmpty()) { + settings.insert(scsiModeKey, configChoiceValue(scsiModeChoices, int(sizeof(scsiModeChoices) / sizeof(scsiModeChoices[0])), miscScsiMode->currentText())); + } settings.insert(QStringLiteral("sana2"), expansionSana2->isEnabled() && expansionSana2->isChecked() ? QStringLiteral("true") : QStringLiteral("false")); const int displayIndex = qMax(0, hostDisplay->currentIndex()); settings.insert(QStringLiteral("gfx_display"), QString::number(displayIndex)); diff --git a/tools/unix-smoke-config-roundtrip.sh b/tools/unix-smoke-config-roundtrip.sh index ceb418c6..5321dc4e 100755 --- a/tools/unix-smoke-config-roundtrip.sh +++ b/tools/unix-smoke-config-roundtrip.sh @@ -34,6 +34,7 @@ run_case() { name=$1 input=$2 keys=$3 + absent_keys=${4:-} output="$WORK/$name-out.uae" env QT_QPA_PLATFORM=offscreen \ @@ -63,6 +64,12 @@ run_case() { failed=1 fi done + for key in $absent_keys; do + if grep -q "^${key}=" "$output"; then + echo "FAIL: $name: $key was added during roundtrip" >&2 + failed=1 + fi + done if [ "$failed" -ne 0 ]; then echo "--- merged config ---" >&2 cat "$output" >&2 @@ -123,4 +130,18 @@ EOF run_case a3000 "$WORK/a3000.uae" \ "cpu_model fpu_model mmu_model cpu_24bit_addressing chipset chipmem_size bogomem_size z3mem_size" +cat > "$WORK/a4091.uae" <