Explorar o código

AK: Provide off-switch for dbg() output

Ben Wiederhake %!s(int64=5) %!d(string=hai) anos
pai
achega
1ef26e0c09
Modificáronse 2 ficheiros con 20 adicións e 1 borrados
  1. 13 1
      AK/LogStream.cpp
  2. 7 0
      AK/LogStream.h

+ 13 - 1
AK/LogStream.cpp

@@ -163,13 +163,25 @@ KernelLogStream::~KernelLogStream()
 
 DebugLogStream::~DebugLogStream()
 {
-    if (!empty()) {
+    if (!empty() && s_enabled) {
         char newline = '\n';
         write(&newline, 1);
         dbgputstr(reinterpret_cast<char*>(data()), size());
     }
 }
 
+void DebugLogStream::set_enabled(bool enabled)
+{
+    s_enabled = enabled;
+}
+
+bool DebugLogStream::is_enabled()
+{
+    return s_enabled;
+}
+
+bool DebugLogStream::s_enabled = true;
+
 #ifndef KERNEL
 StdLogStream::~StdLogStream()
 {

+ 7 - 0
AK/LogStream.h

@@ -115,6 +115,13 @@ class DebugLogStream final : public BufferedLogStream {
 public:
     DebugLogStream() { }
     virtual ~DebugLogStream() override;
+
+    // DebugLogStream only checks `enabled` and possibly generates output while the destructor runs.
+    static void set_enabled(bool);
+    static bool is_enabled();
+
+private:
+    static bool s_enabled;
 };
 
 #if !defined(KERNEL)