aboutsummaryrefslogtreecommitdiff
path: root/engines/wintermute/base/sound
diff options
context:
space:
mode:
authorTobia Tesan2016-03-30 17:16:41 +0200
committerTobia Tesan2016-03-30 18:35:05 +0200
commit0cfd0589432798838b66023b01a5ca6ba4fad0ca (patch)
tree7c11c8a628629b33ba2f1bfa794051853c510adc /engines/wintermute/base/sound
parent2c8160245460cc9a7a864b58b4e962f7a2c77c4b (diff)
downloadscummvm-rg350-0cfd0589432798838b66023b01a5ca6ba4fad0ca.tar.gz
scummvm-rg350-0cfd0589432798838b66023b01a5ca6ba4fad0ca.tar.bz2
scummvm-rg350-0cfd0589432798838b66023b01a5ca6ba4fad0ca.zip
WINTERMUTE: Correctly find .ogg version of .wav files
As it was, it didn't reliably work across platforms because it turned some\\windows\\path.wav into some/system/pathogg Note no "." before "ogg"; also since we use the new filename to search for the file inside DCPs, which use Windows naming, we don't want system-specific path format. Fixes #7088
Diffstat (limited to 'engines/wintermute/base/sound')
-rw-r--r--engines/wintermute/base/sound/base_sound_manager.cpp15
1 files changed, 7 insertions, 8 deletions
diff --git a/engines/wintermute/base/sound/base_sound_manager.cpp b/engines/wintermute/base/sound/base_sound_manager.cpp
index f1e0c3b1f9..74c0086817 100644
--- a/engines/wintermute/base/sound/base_sound_manager.cpp
+++ b/engines/wintermute/base/sound/base_sound_manager.cpp
@@ -100,15 +100,14 @@ BaseSoundBuffer *BaseSoundMgr::addSound(const Common::String &filename, Audio::M
BaseSoundBuffer *sound;
Common::String useFilename = filename;
+ useFilename.toLowercase();
// try to switch WAV to OGG file (if available)
- AnsiString ext = PathUtil::getExtension(filename);
- if (StringUtil::compareNoCase(ext, "wav")) {
- AnsiString path = PathUtil::getDirectoryName(filename);
- AnsiString name = PathUtil::getFileNameWithoutExtension(filename);
-
- AnsiString newFile = PathUtil::combine(path, name + "ogg");
- if (BaseFileManager::getEngineInstance()->hasFile(newFile)) {
- useFilename = newFile;
+ if (useFilename.hasSuffix(".wav")) {
+ Common::String oggFilename = useFilename;
+ oggFilename.erase(oggFilename.size() - 4);
+ oggFilename = oggFilename + ".ogg";
+ if (BaseFileManager::getEngineInstance()->hasFile(oggFilename)) {
+ useFilename = oggFilename;
}
}