aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene Sandulenko2017-01-09 09:10:09 +0100
committerEugene Sandulenko2017-01-09 09:22:35 +0100
commiteab2e06169d2d6447f24f04ef04f1adc342c8aac (patch)
tree48fcb9e3aa8b9bf2226ad1b029dbe311e97809e5
parentf63b9d0fcb50ff4a976d0dcbfb132f43902454a3 (diff)
downloadscummvm-rg350-eab2e06169d2d6447f24f04ef04f1adc342c8aac.tar.gz
scummvm-rg350-eab2e06169d2d6447f24f04ef04f1adc342c8aac.tar.bz2
scummvm-rg350-eab2e06169d2d6447f24f04ef04f1adc342c8aac.zip
COMMON: Enhanced debug channel checks.
Now it is possible to enforce checking by specifying level -1, that is, debug level 11 will not turn it on.
-rw-r--r--common/debug-channels.h2
-rw-r--r--common/debug.cpp8
-rw-r--r--common/debug.h1
3 files changed, 6 insertions, 5 deletions
diff --git a/common/debug-channels.h b/common/debug-channels.h
index 1414a1053a..0fb8006803 100644
--- a/common/debug-channels.h
+++ b/common/debug-channels.h
@@ -117,7 +117,7 @@ public:
/**
* Test whether the given debug channel is enabled.
*/
- bool isDebugChannelEnabled(uint32 channel);
+ bool isDebugChannelEnabled(uint32 channel, bool enforce = false);
private:
typedef HashMap<String, DebugChannel, IgnoreCase_Hash, IgnoreCase_EqualTo> DebugChannelMap;
diff --git a/common/debug.cpp b/common/debug.cpp
index c61fc63dea..5db8990db8 100644
--- a/common/debug.cpp
+++ b/common/debug.cpp
@@ -110,9 +110,9 @@ void DebugManager::disableAllDebugChannels() {
disableDebugChannel(i->_value.name);
}
-bool DebugManager::isDebugChannelEnabled(uint32 channel) {
+bool DebugManager::isDebugChannelEnabled(uint32 channel, bool enforce) {
// Debug level 11 turns on all special debug level messages
- if (gDebugLevel == 11)
+ if (gDebugLevel == 11 && enforce == false)
return true;
else
return (gDebugChannelsEnabled & channel) != 0;
@@ -125,8 +125,8 @@ bool debugLevelSet(int level) {
}
bool debugChannelSet(int level, uint32 debugChannels) {
- if (gDebugLevel != 11)
- if (level > gDebugLevel || !(DebugMan.isDebugChannelEnabled(debugChannels)))
+ if (gDebugLevel != 11 || level == -1)
+ if ((level != -1 && level > gDebugLevel) || !(DebugMan.isDebugChannelEnabled(debugChannels, level == -1)))
return false;
return true;
diff --git a/common/debug.h b/common/debug.h
index 883a0bf29d..5ec37f2f1e 100644
--- a/common/debug.h
+++ b/common/debug.h
@@ -117,6 +117,7 @@ bool debugLevelSet(int level);
/**
* Returns true if the debug level and channel are active
*
+ * @param level debug level to check against. If set to -1, only channel check is active
* @see enableDebugChannel
*/
bool debugChannelSet(int level, uint32 debugChannels);