Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 6589260fc1b0ba28063b02e5889fe5c49d74ded1 https://github.com/WebKit/WebKit/commit/6589260fc1b0ba28063b02e5889fe5c49d74ded1 Author: Jean-Yves Avenard <j...@apple.com> Date: 2023-03-30 (Thu, 30 Mar 2023)
Changed paths: M Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp M Source/WebKit/GPUProcess/media/RemoteMediaSourceProxy.cpp M Source/WebKit/GPUProcess/media/RemoteMediaSourceProxy.h M Source/WebKit/WebProcess/GPU/media/MediaSourcePrivateRemote.cpp M Source/WebKit/WebProcess/GPU/media/MediaSourcePrivateRemote.h M Source/WebKit/WebProcess/GPU/media/MediaSourcePrivateRemote.messages.in M Source/WebKit/WebProcess/GPU/media/SourceBufferPrivateRemote.cpp M Source/WebKit/WebProcess/GPU/media/SourceBufferPrivateRemote.h Log Message: ----------- ASSERTION FAILED: Unhandled message RemoteSourceBufferProxy_SetTimestampOffset https://bugs.webkit.org/show_bug.cgi?id=249703 rdar://103590497 Reviewed by Youenn Fablet. RemoteMediaSourceProxy is owned by the RemoteMediaPlayerProxy and will be deleted (as there's only a single reference count) when it is destroyed. The RemoteSourceBufferProxies are created by the RemoteMediaSourceProxy and will be deleted when it too is destroyed. However, both the MediaSource and SourceBuffer running in the content process are cycle counted and may live for much longer than their proxied objects running in the GPU process. We make the RemoteMediaSourceProxy notify is content process counterpart which in turn will notify all the associated RemoteSourceBufferProxies that they are about to shutdown so that they don't attempt to send messages that would otherwise be left unhandled. Fly-by fix: Some CompletionHandlers weren't called under some circumstances. Covered by existing tests. * Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp: (WebKit::RemoteMediaPlayerProxy::~RemoteMediaPlayerProxy): (WebKit::RemoteMediaPlayerProxy::load): (WebKit::RemoteMediaPlayerProxy::loadMediaSource): (WebKit::RemoteMediaPlayerProxy::addRemoteAudioTrackProxy): (WebKit::RemoteMediaPlayerProxy::addRemoteVideoTrackProxy): (WebKit::RemoteMediaPlayerProxy::addRemoteTextTrackProxy): * Source/WebKit/GPUProcess/media/RemoteMediaSourceProxy.cpp: (WebKit::RemoteMediaSourceProxy::shutdown): * Source/WebKit/GPUProcess/media/RemoteMediaSourceProxy.h: * Source/WebKit/WebProcess/GPU/media/MediaSourcePrivateRemote.cpp: (WebKit::MediaSourcePrivateRemote::~MediaSourcePrivateRemote): (WebKit::MediaSourcePrivateRemote::addSourceBuffer): (WebKit::MediaSourcePrivateRemote::durationChanged): (WebKit::MediaSourcePrivateRemote::bufferedChanged): (WebKit::MediaSourcePrivateRemote::setReadyState): (WebKit::MediaSourcePrivateRemote::setIsSeeking): (WebKit::MediaSourcePrivateRemote::waitForSeekCompleted): (WebKit::MediaSourcePrivateRemote::seekCompleted): (WebKit::MediaSourcePrivateRemote::setTimeFudgeFactor): (WebKit::MediaSourcePrivateRemote::mediaSourcePrivateShuttingDown): * Source/WebKit/WebProcess/GPU/media/MediaSourcePrivateRemote.h: * Source/WebKit/WebProcess/GPU/media/MediaSourcePrivateRemote.messages.in: * Source/WebKit/WebProcess/GPU/media/SourceBufferPrivateRemote.cpp: (WebKit::SourceBufferPrivateRemote::append): (WebKit::SourceBufferPrivateRemote::abort): (WebKit::SourceBufferPrivateRemote::resetParserState): (WebKit::SourceBufferPrivateRemote::removedFromMediaSource): (WebKit::SourceBufferPrivateRemote::setReadyState): (WebKit::SourceBufferPrivateRemote::setActive): (WebKit::SourceBufferPrivateRemote::canSwitchToType): (WebKit::SourceBufferPrivateRemote::setMediaSourceEnded): (WebKit::SourceBufferPrivateRemote::setMode): (WebKit::SourceBufferPrivateRemote::updateBufferedFromTrackBuffers): (WebKit::SourceBufferPrivateRemote::removeCodedFrames): (WebKit::SourceBufferPrivateRemote::evictCodedFrames): (WebKit::SourceBufferPrivateRemote::addTrackBuffer): (WebKit::SourceBufferPrivateRemote::resetTrackBuffers): (WebKit::SourceBufferPrivateRemote::clearTrackBuffers): (WebKit::SourceBufferPrivateRemote::setAllTrackBuffersNeedRandomAccess): (WebKit::SourceBufferPrivateRemote::setGroupStartTimestamp): (WebKit::SourceBufferPrivateRemote::setGroupStartTimestampToEndTimestamp): (WebKit::SourceBufferPrivateRemote::setShouldGenerateTimestamps): (WebKit::SourceBufferPrivateRemote::reenqueueMediaIfNeeded): (WebKit::SourceBufferPrivateRemote::resetTimestampOffsetInTrackBuffers): (WebKit::SourceBufferPrivateRemote::startChangingType): (WebKit::SourceBufferPrivateRemote::setTimestampOffset): (WebKit::SourceBufferPrivateRemote::setAppendWindowStart): (WebKit::SourceBufferPrivateRemote::setAppendWindowEnd): (WebKit::SourceBufferPrivateRemote::seekToTime): (WebKit::SourceBufferPrivateRemote::updateTrackIds): (WebKit::SourceBufferPrivateRemote::bufferedSamplesForTrackId): (WebKit::SourceBufferPrivateRemote::enqueuedSamplesForTrackID): (WebKit::SourceBufferPrivateRemote::memoryPressure): (WebKit::SourceBufferPrivateRemote::minimumUpcomingPresentationTimeForTrackID): (WebKit::SourceBufferPrivateRemote::setMaximumQueueDepthForTrackID): * Source/WebKit/WebProcess/GPU/media/SourceBufferPrivateRemote.h: Canonical link: https://commits.webkit.org/262333@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes