Title: [287073] trunk/Source/WebKit
Revision
287073
Author
you...@apple.com
Date
2021-12-15 08:23:33 -0800 (Wed, 15 Dec 2021)

Log Message

RemoteAudioMediaStreamTrackRendererInternalUnitManager::Unit should only reset once
https://bugs.webkit.org/show_bug.cgi?id=234340

Reviewed by Eric Carlson.

As seen in logs, there are cases where the unit is notified reset several times before it gets stopped and restarted.
This triggers resetting on WebProcess side several times which is unneeded.
Instead, we now only call reset once in a start/stop cycle of the audio unit.
Manually tested.

* GPUProcess/webrtc/RemoteAudioMediaStreamTrackRendererInternalUnitManager.cpp:
(WebKit::RemoteAudioMediaStreamTrackRendererInternalUnitManager::Unit::notifyReset):
(WebKit::RemoteAudioMediaStreamTrackRendererInternalUnitManager::Unit::start):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (287072 => 287073)


--- trunk/Source/WebKit/ChangeLog	2021-12-15 14:40:41 UTC (rev 287072)
+++ trunk/Source/WebKit/ChangeLog	2021-12-15 16:23:33 UTC (rev 287073)
@@ -1,3 +1,19 @@
+2021-12-15  Youenn Fablet  <you...@apple.com>
+
+        RemoteAudioMediaStreamTrackRendererInternalUnitManager::Unit should only reset once
+        https://bugs.webkit.org/show_bug.cgi?id=234340
+
+        Reviewed by Eric Carlson.
+
+        As seen in logs, there are cases where the unit is notified reset several times before it gets stopped and restarted.
+        This triggers resetting on WebProcess side several times which is unneeded.
+        Instead, we now only call reset once in a start/stop cycle of the audio unit.
+        Manually tested.
+
+        * GPUProcess/webrtc/RemoteAudioMediaStreamTrackRendererInternalUnitManager.cpp:
+        (WebKit::RemoteAudioMediaStreamTrackRendererInternalUnitManager::Unit::notifyReset):
+        (WebKit::RemoteAudioMediaStreamTrackRendererInternalUnitManager::Unit::start):
+
 2021-12-15  Per Arne Vollan  <pvol...@apple.com>
 
         [iOS][WP] Add access to required syscall

Modified: trunk/Source/WebKit/GPUProcess/webrtc/RemoteAudioMediaStreamTrackRendererInternalUnitManager.cpp (287072 => 287073)


--- trunk/Source/WebKit/GPUProcess/webrtc/RemoteAudioMediaStreamTrackRendererInternalUnitManager.cpp	2021-12-15 14:40:41 UTC (rev 287072)
+++ trunk/Source/WebKit/GPUProcess/webrtc/RemoteAudioMediaStreamTrackRendererInternalUnitManager.cpp	2021-12-15 16:23:33 UTC (rev 287073)
@@ -88,6 +88,7 @@
     bool m_isPlaying { false };
     WebCore::CAAudioStreamDescription m_description;
     bool m_shouldRegisterAsSpeakerSamplesProducer { false };
+    bool m_canReset { true };
 };
 
 RemoteAudioMediaStreamTrackRendererInternalUnitManager::RemoteAudioMediaStreamTrackRendererInternalUnitManager(GPUConnectionToWebProcess& gpuConnectionToWebProcess)
@@ -178,6 +179,10 @@
 
 void RemoteAudioMediaStreamTrackRendererInternalUnitManager::Unit::notifyReset()
 {
+    if (!m_canReset)
+        return;
+
+    m_canReset = false;
     m_connection->send(Messages::GPUProcessConnection::ResetAudioMediaStreamTrackRendererInternalUnit { m_identifier }, 0);
 }
 
@@ -202,6 +207,7 @@
     m_readOffset = 0;
     m_generateOffset = 0;
     m_isPlaying = true;
+    m_canReset = true;
     m_ringBuffer = WebCore::CARingBuffer::adoptStorage(makeUniqueRef<ReadOnlySharedRingBufferStorage>(handle), description, numberOfFrames).moveToUniquePtr();
     m_renderSemaphore = WTFMove(semaphore);
     m_description = description;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to