Bug 1311340 - Wire cubeb logging to MOZ_LOG. r?kinetik draft
authorPaul Adenot <paul@paul.cx>
Wed, 19 Oct 2016 14:39:50 +0200
changeset 426965 82bfe4507e878c17b96b98657d23655417f8fcfa
parent 426964 e19553084765cd3b700d5b2d983f2b0e828e4bca
child 534332 4cc2ac4c87509179bf894d1c84ac2921f5fffe3d
push id32871
push userpaul@paul.cx
push dateWed, 19 Oct 2016 13:05:07 +0000
reviewerskinetik
bugs1311340
milestone52.0a1
Bug 1311340 - Wire cubeb logging to MOZ_LOG. r?kinetik MozReview-Commit-ID: 1zhkt29SL5x
dom/media/CubebUtils.cpp
--- a/dom/media/CubebUtils.cpp
+++ b/dom/media/CubebUtils.cpp
@@ -8,29 +8,40 @@
 #include <algorithm>
 #include "nsIStringBundle.h"
 #include "nsDebug.h"
 #include "nsString.h"
 #include "mozilla/Preferences.h"
 #include "mozilla/StaticMutex.h"
 #include "mozilla/StaticPtr.h"
 #include "mozilla/Telemetry.h"
+#include "mozilla/Logging.h"
 #include "nsThreadUtils.h"
 #include "CubebUtils.h"
 #include "nsAutoRef.h"
 #include "prdtoa.h"
 
 #define PREF_VOLUME_SCALE "media.volume_scale"
 #define PREF_CUBEB_LATENCY_PLAYBACK "media.cubeb_latency_playback_ms"
 #define PREF_CUBEB_LATENCY_MSG "media.cubeb_latency_msg_frames"
 
 namespace mozilla {
 
 namespace {
 
+LazyLogModule gCubebLog("cubeb");
+
+void CubebLogCallback(const char* aFmt, ...)
+{
+  va_list arglist;
+  va_start(arglist, aFmt);
+  MOZ_LOG(gCubebLog, LogLevel::Verbose, (aFmt, arglist));
+  va_end(arglist);
+}
+
 // This mutex protects the variables below.
 StaticMutex sMutex;
 enum class CubebState {
   Uninitialized = 0,
   Initialized,
   Shutdown
 } sCubebState = CubebState::Uninitialized;
 cubeb* sCubebContext;
@@ -211,16 +222,22 @@ cubeb* GetCubebContextUnlocked()
     NS_WARNING_ASSERTION(
       sBrandName, "Did not initialize sbrandName, and not on the main thread?");
   }
 
   int rv = cubeb_init(&sCubebContext, sBrandName);
   NS_WARNING_ASSERTION(rv == CUBEB_OK, "Could not get a cubeb context.");
   sCubebState = (rv == CUBEB_OK) ? CubebState::Initialized : CubebState::Uninitialized;
 
+  if (MOZ_LOG_TEST(gCubebLog, LogLevel::Verbose)) {
+    cubeb_set_log_callback(CUBEB_LOG_VERBOSE, CubebLogCallback);
+  } else if (MOZ_LOG_TEST(gCubebLog, LogLevel::Error)) {
+    cubeb_set_log_callback(CUBEB_LOG_NORMAL, CubebLogCallback);
+  }
+
   return sCubebContext;
 }
 
 void ReportCubebBackendUsed()
 {
   StaticMutexAutoLock lock(sMutex);
 
   sAudioStreamInitEverSucceeded = true;