Hop to main thread for release logging in RealtimeIncomingAudioSource
https://bugs.webkit.org/show_bug.cgi?id=199813

Reviewed by Eric Carlson.

LoggerHelper routines allow logging messages in system console and inspector console.
These routines iterate through a Vector of log observers which is not thread safe.
Document, the main log observer, also expects to be called on the main thread.
Manually tested (writing a layout test for this would require more than 2 seconds).

* platform/mediastream/mac/RealtimeIncomingAudioSourceCocoa.cpp:
(WebCore::RealtimeIncomingAudioSourceCocoa::OnData):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@247480 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index 61dc5fd..102ad59 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,18 @@
+2019-07-16  Youenn Fablet  <youenn@apple.com>
+
+        Hop to main thread for release logging in RealtimeIncomingAudioSource
+        https://bugs.webkit.org/show_bug.cgi?id=199813
+
+        Reviewed by Eric Carlson.
+
+        LoggerHelper routines allow logging messages in system console and inspector console.
+        These routines iterate through a Vector of log observers which is not thread safe.
+        Document, the main log observer, also expects to be called on the main thread.
+        Manually tested (writing a layout test for this would require more than 2 seconds).
+
+        * platform/mediastream/mac/RealtimeIncomingAudioSourceCocoa.cpp:
+        (WebCore::RealtimeIncomingAudioSourceCocoa::OnData):
+
 2019-07-15  Ryan Haddad  <ryanhaddad@apple.com>
 
         Unreviewed, rolling out r247444.
diff --git a/Source/WebCore/platform/mediastream/mac/RealtimeIncomingAudioSourceCocoa.cpp b/Source/WebCore/platform/mediastream/mac/RealtimeIncomingAudioSourceCocoa.cpp
index af15234..2df9c48 100644
--- a/Source/WebCore/platform/mediastream/mac/RealtimeIncomingAudioSourceCocoa.cpp
+++ b/Source/WebCore/platform/mediastream/mac/RealtimeIncomingAudioSourceCocoa.cpp
@@ -87,8 +87,11 @@
         memcpy(audioBufferList.buffer(0)->mData, audioData, audioBufferList.buffer(0)->mDataByteSize);
 
 #if !RELEASE_LOG_DISABLED
-    if (!(++m_chunksReceived % 200))
-        ALWAYS_LOG_IF(loggerPtr(), LOGIDENTIFIER, "chunk ", m_chunksReceived);
+    if (!(++m_chunksReceived % 200)) {
+        callOnMainThread([this, protectedThis = makeRef(*this)] {
+            ALWAYS_LOG_IF(loggerPtr(), LOGIDENTIFIER, "chunk ", m_chunksReceived);
+        });
+    }
 #endif
 
     audioSamplesAvailable(mediaTime, audioBufferList, CAAudioStreamDescription(newDescription), numberOfFrames);