diff options
Diffstat (limited to 'gui')
-rw-r--r-- | gui/options.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/gui/options.cpp b/gui/options.cpp index 0553e5910a..ed56630a62 100644 --- a/gui/options.cpp +++ b/gui/options.cpp @@ -657,9 +657,15 @@ void OptionsDialog::addAudioControls(GuiObject *boss, const Common::String &pref for (MusicPlugin::List::const_iterator m = p.begin(); m != p.end(); ++m) { MusicDevices i = (**m)->getDevices(); for (MusicDevices::iterator d = i.begin(); d != i.end(); ++d) { + const uint32 deviceGuiOption = MidiDriver::musicType2GUIO(d->getMusicType()); + if ((_domain == Common::ConfigManager::kApplicationDomain && d->getMusicType() != MT_TOWNS) // global dialog - skip useless FM-Towns option there || (_domain != Common::ConfigManager::kApplicationDomain && !(_guioptions & allFlags)) // No flags are specified - || _guioptions & (MidiDriver::musicType2GUIO(d->getMusicType())) // flag is present + || (_guioptions & deviceGuiOption) // flag is present + // HACK/FIXME: For now we have to show GM devices, even when the game only has GUIO_MIDIMT32 set, + // else we would not show for example external devices connected via ALSA, since they are always + // marked as General MIDI device. + || (deviceGuiOption == Common::GUIO_MIDIGM && (_guioptions & Common::GUIO_MIDIMT32)) || d->getMusicDriverId() == "auto" || d->getMusicDriverId() == "null") // always add default and null device _midiPopUp->appendEntry(d->getCompleteName(), d->getHandle()); |