Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 7526d352bd58750c78a800479573067cc7046e0e
      
https://github.com/WebKit/WebKit/commit/7526d352bd58750c78a800479573067cc7046e0e
  Author: Youenn Fablet <you...@apple.com>
  Date:   2024-12-05 (Thu, 05 Dec 2024)

  Changed paths:
    A 
LayoutTests/imported/w3c/web-platform-tests/mediacapture-insertable-streams/MediaStreamTrackProcessor-stop.worker-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/mediacapture-insertable-streams/MediaStreamTrackProcessor-stop.worker.html
    A 
LayoutTests/imported/w3c/web-platform-tests/mediacapture-insertable-streams/MediaStreamTrackProcessor-stop.worker.js
    M Source/WebCore/Modules/mediastream/MediaStreamTrackProcessor.cpp
    M Source/WebCore/Modules/mediastream/MediaStreamTrackProcessor.h

  Log Message:
  -----------
  MediaStreamTrackProcessor::Source should not enqueue once it is closed
rdar://140966032
https://bugs.webkit.org/show_bug.cgi?id=284099

Reviewed by Jean-Yves Avenard.

Stopping a track will close the readable stream of its 
MediaStreamTrackProcessor.
When the track is VideoTrackGenerator and gets stopped, it will close 
synchronously the readable stream of the MediaStreamTrackProcessor observing 
the VideoTrackGenerator track.
But for video frames, we post a task to the worker thread (even though we are 
already in the worker thread).
We can thus enqueue video frames after stopping the readable stream.

To prevent this, we set m_isCancelled to true in 
MediaStreamTrackProcessor::Source::close.
As a small refactoring, we also move the m_isCancelled to 
MediaStreamTrackProcessor::tryEnqueueingVideoFrame to return earlier.
We add an ASSERT(m_isCancelled) in MediaStreamTrackProcessor::Source::enqueue.

* 
LayoutTests/imported/w3c/web-platform-tests/mediacapture-insertable-streams/MediaStreamTrackProcessor-stop.worker-expected.txt:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/mediacapture-insertable-streams/MediaStreamTrackProcessor-stop.worker.html:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/mediacapture-insertable-streams/MediaStreamTrackProcessor-stop.worker.js:
 Added.
(makeVideoFrame):
(promise_test.async t):
* Source/WebCore/Modules/mediastream/MediaStreamTrackProcessor.cpp:
(WebCore::MediaStreamTrackProcessor::tryEnqueueingVideoFrame):
(WebCore::MediaStreamTrackProcessor::Source::close):
(WebCore::MediaStreamTrackProcessor::Source::enqueue):
(WebCore::MediaStreamTrackProcessor::Source::isWaiting const): Deleted.
* Source/WebCore/Modules/mediastream/MediaStreamTrackProcessor.h:

Canonical link: https://commits.webkit.org/287409@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to