From c117ef1e5082bdd831c2412b20ddeb3b2056ff63 Mon Sep 17 00:00:00 2001 From: Jamieson Christian Date: Wed, 11 Jun 2003 06:49:47 +0000 Subject: 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 --- common/gameDetector.cpp | 3 +++ 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: -- cgit v1.2.3