diff options
author | Martin Kiewitz | 2010-07-29 21:12:16 +0000 |
---|---|---|
committer | Martin Kiewitz | 2010-07-29 21:12:16 +0000 |
commit | 1c24f2ca8fc333e5cf4df29dfbca83a9eb50bf3f (patch) | |
tree | 7c0c8e3393494449aab51368d99d163ad048bc34 /engines/sci/engine | |
parent | 630127bc077e56c619c816a89e1d577c38b5eafb (diff) | |
download | scummvm-rg350-1c24f2ca8fc333e5cf4df29dfbca83a9eb50bf3f.tar.gz scummvm-rg350-1c24f2ca8fc333e5cf4df29dfbca83a9eb50bf3f.tar.bz2 scummvm-rg350-1c24f2ca8fc333e5cf4df29dfbca83a9eb50bf3f.zip |
SCI: midi hold behaviour fixed
we shouldnt react on hold midi data when no actual hold was called, fixes eq2/amulet problem (bug #3035392)
svn-id: r51482
Diffstat (limited to 'engines/sci/engine')
-rw-r--r-- | engines/sci/engine/kernel.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/engines/sci/engine/kernel.cpp b/engines/sci/engine/kernel.cpp index a7e5ab208a..70a0166b15 100644 --- a/engines/sci/engine/kernel.cpp +++ b/engines/sci/engine/kernel.cpp @@ -652,6 +652,14 @@ void Kernel::mapFunctions() { bool Kernel::debugSetFunctionLogging(const char *kernelName, bool logging) { if (strcmp(kernelName, "*")) { + const char *kernelSubName = strchr(kernelName, '('); + uint kernelSubNameLen = 0; + if (kernelSubName) { + kernelSubName++; + kernelSubNameLen = strlen(kernelSubName); + if ((!kernelSubNameLen) || (kernelSubName[kernelSubNameLen - 1] != ')')) + return false; + } for (uint id = 0; id < _kernelFuncs.size(); id++) { if (_kernelFuncs[id].name) { if (!_kernelFuncs[id].subFunctions) { @@ -662,7 +670,15 @@ bool Kernel::debugSetFunctionLogging(const char *kernelName, bool logging) { } } else { // Sub-Functions available - // TODO: do this + if (kernelSubName) { + KernelSubFunction *kernelSubCall = _kernelFuncs[id].subFunctions; + uint kernelSubCallCount = _kernelFuncs[id].subFunctionCount; + for (uint subId = 0; subId < kernelSubCallCount; subId++) { + if (kernelSubCall->function) + kernelSubCall->debugLogging = logging; + kernelSubCall++; + } + } } } } |