diff options
author | Jamieson Christian | 2003-06-11 06:49:47 +0000 |
---|---|---|
committer | Jamieson Christian | 2003-06-11 06:49:47 +0000 |
commit | c117ef1e5082bdd831c2412b20ddeb3b2056ff63 (patch) | |
tree | 19152e995eaf05621379457eb0a866bb175775da | |
parent | 01ba60ccef360f81460900154f9e35265fb40618 (diff) | |
download | scummvm-rg350-c117ef1e5082bdd831c2412b20ddeb3b2056ff63.tar.gz scummvm-rg350-c117ef1e5082bdd831c2412b20ddeb3b2056ff63.tar.bz2 scummvm-rg350-c117ef1e5082bdd831c2412b20ddeb3b2056ff63.zip |
Fix for bug [741592] GUI: Switching music driver mixes up music
Implement true music driver selection from the GUI options dialog.
This implementation depends on a new, transient config domain called
"user-overrides". Probably any other config changes made from the
options dialog will need to go into this domain, which is now
loaded after the game settings are loaded.
I hope this is the right way to do it. I'm still a little fuzzy
about our game settings architecture. If anybody suddenly gets
a "[user-overrides]" section showing up in their scummvm.ini or
scummvm.rc files, you'll know why.
svn-id: r8434
-rw-r--r-- | common/gameDetector.cpp | 3 | ||||
-rw-r--r-- | gui/options.cpp | 9 |
2 files changed, 10 insertions, 2 deletions
diff --git a/common/gameDetector.cpp b/common/gameDetector.cpp index 2d656e19c7..5192371591 100644 --- a/common/gameDetector.cpp +++ b/common/gameDetector.cpp @@ -487,6 +487,9 @@ void GameDetector::setGame(const String &name) { g_config->rename_domain(name, "game-specific"); g_config->rename_domain("game-specific", name); updateconfig(); + g_config->set_domain ("user-overrides"); + updateconfig(); + g_config->delete_domain ("user-overrides"); } int GameDetector::parseGraphicsMode(const char *s) { diff --git a/gui/options.cpp b/gui/options.cpp index b4806e033f..ecfbc5e836 100644 --- a/gui/options.cpp +++ b/gui/options.cpp @@ -205,8 +205,13 @@ void GlobalOptionsDialog::handleCommand(CommandSender *sender, uint32 cmd, uint3 break; case kPopUpItemSelectedCmd: if (sender == _midiPopUp) { - _detector._midi_driver = (int)data; - printf("Setting _detector._midi_driver to %d\n", _detector._midi_driver); + const MusicDriver *md = GameDetector::getMusicDrivers(); + for (; md->name; md++) { + if (md->id == (int) data) { + g_config->set ("music_driver", md->name, "user-overrides"); + break; + } + } } break; case kOKCmd: |