Title: [288109] trunk/Source/WebCore
Revision
288109
Author
[email protected]
Date
2022-01-17 23:35:48 -0800 (Mon, 17 Jan 2022)

Log Message

AudioMediaStreamTrackRendererUnit::reset should hop to the main thread before calling its observers
https://bugs.webkit.org/show_bug.cgi?id=235290

Reviewed by Darin Adler.

In case of doing audio rendering in WebProcess, we need to hop to main thread since the callback might get called from a background thread.

* platform/mediastream/cocoa/AudioMediaStreamTrackRendererUnit.cpp:
* platform/mediastream/cocoa/AudioMediaStreamTrackRendererUnit.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (288108 => 288109)


--- trunk/Source/WebCore/ChangeLog	2022-01-18 05:21:43 UTC (rev 288108)
+++ trunk/Source/WebCore/ChangeLog	2022-01-18 07:35:48 UTC (rev 288109)
@@ -1,3 +1,15 @@
+2022-01-17  Youenn Fablet  <[email protected]>
+
+        AudioMediaStreamTrackRendererUnit::reset should hop to the main thread before calling its observers
+        https://bugs.webkit.org/show_bug.cgi?id=235290
+
+        Reviewed by Darin Adler.
+
+        In case of doing audio rendering in WebProcess, we need to hop to main thread since the callback might get called from a background thread.
+
+        * platform/mediastream/cocoa/AudioMediaStreamTrackRendererUnit.cpp:
+        * platform/mediastream/cocoa/AudioMediaStreamTrackRendererUnit.h:
+
 2022-01-17  Myles C. Maxfield  <[email protected]>
 
         REGRESSION(r281389): using font-variant-ligatures causes Unicode bidi isolation control characters to render

Modified: trunk/Source/WebCore/platform/mediastream/cocoa/AudioMediaStreamTrackRendererUnit.cpp (288108 => 288109)


--- trunk/Source/WebCore/platform/mediastream/cocoa/AudioMediaStreamTrackRendererUnit.cpp	2022-01-18 05:21:43 UTC (rev 288108)
+++ trunk/Source/WebCore/platform/mediastream/cocoa/AudioMediaStreamTrackRendererUnit.cpp	2022-01-18 07:35:48 UTC (rev 288109)
@@ -141,7 +141,13 @@
 void AudioMediaStreamTrackRendererUnit::reset()
 {
     RELEASE_LOG(WebRTC, "AudioMediaStreamTrackRendererUnit::reset");
-    ASSERT(isMainThread());
+    if (!isMainThread()) {
+        callOnMainThread([weakThis = WeakPtr { this }] {
+            if (weakThis)
+                weakThis->reset();
+        });
+        return;
+    }
 
     m_resetObservers.forEach([](auto& observer) {
         observer();

Modified: trunk/Source/WebCore/platform/mediastream/cocoa/AudioMediaStreamTrackRendererUnit.h (288108 => 288109)


--- trunk/Source/WebCore/platform/mediastream/cocoa/AudioMediaStreamTrackRendererUnit.h	2022-01-18 05:21:43 UTC (rev 288108)
+++ trunk/Source/WebCore/platform/mediastream/cocoa/AudioMediaStreamTrackRendererUnit.h	2022-01-18 07:35:48 UTC (rev 288109)
@@ -42,7 +42,7 @@
 class CAAudioStreamDescription;
 class AudioMediaStreamTrackRendererInternalUnit;
 
-class AudioMediaStreamTrackRendererUnit : public BaseAudioMediaStreamTrackRendererUnit {
+class AudioMediaStreamTrackRendererUnit : public BaseAudioMediaStreamTrackRendererUnit, public CanMakeWeakPtr<AudioMediaStreamTrackRendererUnit, WeakPtrFactoryInitialization::Eager> {
 public:
     WEBCORE_EXPORT static AudioMediaStreamTrackRendererUnit& singleton();
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to