]> gitweb.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
qt: stop adding uaescsimode on config save
authorStefan Reinauer <stefan.reinauer@coreboot.org>
Sun, 21 Jun 2026 18:43:34 +0000 (11:43 -0700)
committerStefan Reinauer <stefan.reinauer@coreboot.org>
Tue, 7 Jul 2026 21:00:11 +0000 (14:00 -0700)
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
tools/unix-smoke-config-roundtrip.sh

index b7106847836610ea322e8d01c9881c3e6c641125..edd406b72b467df4682a095afef8a1e7b09bb503 100644 (file)
@@ -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));
index ceb418c6a4be605704c7e60b522f1631e94f0e14..5321dc4eb6f6544683caba5dc4f0a2d47124b008 100755 (executable)
@@ -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" <<EOF
+config_description=Roundtrip A4091
+quickstart=A4000,1
+chipset_compatible=A4000
+a4091_rom_file=rea4091.rom
+hardfile2=rw,:/tmp/disk.hdf,0,0,0,512,0,,scsi0_a4091
+uaehf1=cd2,ro,:,0,0,0,2048,0,,scsi2_a4091
+cdimage2=/tmp/cd.iso
+EOF
+
+run_case a4091 "$WORK/a4091.uae" \
+    "a4091_rom_file hardfile2 uaehf1 cdimage2" \
+    "uaescsimode unix.uaescsimode"
+
 echo "winuae config roundtrip smoke passed"