Title: [278496] trunk/Source
Revision
278496
Author
[email protected]
Date
2021-06-04 13:41:45 -0700 (Fri, 04 Jun 2021)

Log Message

Store MediaPlayer using WeakPtr in MediaPlayerPrivateRemote
https://bugs.webkit.org/show_bug.cgi?id=224421

Reviewed by Eric Carlson.

Source/WebCore:

Made it possible to create a WeakPtr of MediaPlayer.

* platform/graphics/MediaPlayer.h:

Source/WebKit:

Made MediaPlayerPrivateRemote::m_player a WeakPtr.

* WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:
(WebKit::MediaPlayerPrivateRemote::MediaPlayerPrivateRemote):
(WebKit::MediaPlayerPrivateRemote::prepareForPlayback):
(WebKit::MediaPlayerPrivateRemote::load):
(WebKit::MediaPlayerPrivateRemote::networkStateChanged):
(WebKit::MediaPlayerPrivateRemote::setReadyState):
(WebKit::MediaPlayerPrivateRemote::readyStateChanged):
(WebKit::MediaPlayerPrivateRemote::volumeChanged):
(WebKit::MediaPlayerPrivateRemote::muteChanged):
(WebKit::MediaPlayerPrivateRemote::timeChanged):
(WebKit::MediaPlayerPrivateRemote::durationChanged):
(WebKit::MediaPlayerPrivateRemote::rateChanged):
(WebKit::MediaPlayerPrivateRemote::playbackStateChanged):
(WebKit::MediaPlayerPrivateRemote::engineFailedToLoad):
(WebKit::MediaPlayerPrivateRemote::characteristicChanged):
(WebKit::MediaPlayerPrivateRemote::sizeChanged):
(WebKit::MediaPlayerPrivateRemote::firstVideoFrameAvailable):
(WebKit::MediaPlayerPrivateRemote::renderingModeChanged):
(WebKit::MediaPlayerPrivateRemote::acceleratedRenderingStateChanged):
(WebKit::MediaPlayerPrivateRemote::addRemoteAudioTrack):
(WebKit::MediaPlayerPrivateRemote::removeRemoteAudioTrack):
(WebKit::MediaPlayerPrivateRemote::addRemoteTextTrack):
(WebKit::MediaPlayerPrivateRemote::removeRemoteTextTrack):
(WebKit::MediaPlayerPrivateRemote::addRemoteVideoTrack):
(WebKit::MediaPlayerPrivateRemote::removeRemoteVideoTrack):
(WebKit::MediaPlayerPrivateRemote::currentPlaybackTargetIsWirelessChanged):
(WebKit::MediaPlayerPrivateRemote::mediaPlayerKeyNeeded):
(WebKit::MediaPlayerPrivateRemote::waitingForKeyChanged):
(WebKit::MediaPlayerPrivateRemote::initializationDataEncountered):
(WebKit::MediaPlayerPrivateRemote::resourceNotSupported):
(WebKit::MediaPlayerPrivateRemote::activeSourceBuffersChanged):
(WebKit::MediaPlayerPrivateRemote::getRawCookies const):
* WebProcess/GPU/media/MediaPlayerPrivateRemote.h:
* WebProcess/GPU/media/cocoa/MediaPlayerPrivateRemoteCocoa.mm:
(WebKit::MediaPlayerPrivateRemote::MediaPlayerPrivateRemote):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (278495 => 278496)


--- trunk/Source/WebCore/ChangeLog	2021-06-04 20:24:37 UTC (rev 278495)
+++ trunk/Source/WebCore/ChangeLog	2021-06-04 20:41:45 UTC (rev 278496)
@@ -1,3 +1,14 @@
+2021-06-04  Ryosuke Niwa  <[email protected]>
+
+        Store MediaPlayer using WeakPtr in MediaPlayerPrivateRemote
+        https://bugs.webkit.org/show_bug.cgi?id=224421
+
+        Reviewed by Eric Carlson.
+
+        Made it possible to create a WeakPtr of MediaPlayer.
+
+        * platform/graphics/MediaPlayer.h:
+
 2021-06-04  Martin Robinson  <[email protected]>
 
         [css-scroll-snap] Snap offsets and active index are duplicated in ScrollController and ScrollableArea

Modified: trunk/Source/WebCore/platform/graphics/MediaPlayer.h (278495 => 278496)


--- trunk/Source/WebCore/platform/graphics/MediaPlayer.h	2021-06-04 20:24:37 UTC (rev 278495)
+++ trunk/Source/WebCore/platform/graphics/MediaPlayer.h	2021-06-04 20:41:45 UTC (rev 278496)
@@ -53,6 +53,7 @@
 #include <wtf/MediaTime.h>
 #include <wtf/ThreadSafeRefCounted.h>
 #include <wtf/WallTime.h>
+#include <wtf/WeakPtr.h>
 #include <wtf/text/StringHash.h>
 
 #if ENABLE(AVF_CAPTIONS)
@@ -289,7 +290,7 @@
 #endif
 };
 
-class WEBCORE_EXPORT MediaPlayer : public MediaPlayerEnums, public ThreadSafeRefCounted<MediaPlayer, WTF::DestructionThread::Main> {
+class WEBCORE_EXPORT MediaPlayer : public MediaPlayerEnums, public ThreadSafeRefCounted<MediaPlayer, WTF::DestructionThread::Main>, public CanMakeWeakPtr<MediaPlayer> {
     WTF_MAKE_NONCOPYABLE(MediaPlayer); WTF_MAKE_FAST_ALLOCATED;
 public:
     static Ref<MediaPlayer> create(MediaPlayerClient&);

Modified: trunk/Source/WebKit/ChangeLog (278495 => 278496)


--- trunk/Source/WebKit/ChangeLog	2021-06-04 20:24:37 UTC (rev 278495)
+++ trunk/Source/WebKit/ChangeLog	2021-06-04 20:41:45 UTC (rev 278496)
@@ -1,3 +1,48 @@
+2021-06-04  Ryosuke Niwa  <[email protected]>
+
+        Store MediaPlayer using WeakPtr in MediaPlayerPrivateRemote
+        https://bugs.webkit.org/show_bug.cgi?id=224421
+
+        Reviewed by Eric Carlson.
+
+        Made MediaPlayerPrivateRemote::m_player a WeakPtr.
+
+        * WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:
+        (WebKit::MediaPlayerPrivateRemote::MediaPlayerPrivateRemote):
+        (WebKit::MediaPlayerPrivateRemote::prepareForPlayback):
+        (WebKit::MediaPlayerPrivateRemote::load):
+        (WebKit::MediaPlayerPrivateRemote::networkStateChanged):
+        (WebKit::MediaPlayerPrivateRemote::setReadyState):
+        (WebKit::MediaPlayerPrivateRemote::readyStateChanged):
+        (WebKit::MediaPlayerPrivateRemote::volumeChanged):
+        (WebKit::MediaPlayerPrivateRemote::muteChanged):
+        (WebKit::MediaPlayerPrivateRemote::timeChanged):
+        (WebKit::MediaPlayerPrivateRemote::durationChanged):
+        (WebKit::MediaPlayerPrivateRemote::rateChanged):
+        (WebKit::MediaPlayerPrivateRemote::playbackStateChanged):
+        (WebKit::MediaPlayerPrivateRemote::engineFailedToLoad):
+        (WebKit::MediaPlayerPrivateRemote::characteristicChanged):
+        (WebKit::MediaPlayerPrivateRemote::sizeChanged):
+        (WebKit::MediaPlayerPrivateRemote::firstVideoFrameAvailable):
+        (WebKit::MediaPlayerPrivateRemote::renderingModeChanged):
+        (WebKit::MediaPlayerPrivateRemote::acceleratedRenderingStateChanged):
+        (WebKit::MediaPlayerPrivateRemote::addRemoteAudioTrack):
+        (WebKit::MediaPlayerPrivateRemote::removeRemoteAudioTrack):
+        (WebKit::MediaPlayerPrivateRemote::addRemoteTextTrack):
+        (WebKit::MediaPlayerPrivateRemote::removeRemoteTextTrack):
+        (WebKit::MediaPlayerPrivateRemote::addRemoteVideoTrack):
+        (WebKit::MediaPlayerPrivateRemote::removeRemoteVideoTrack):
+        (WebKit::MediaPlayerPrivateRemote::currentPlaybackTargetIsWirelessChanged):
+        (WebKit::MediaPlayerPrivateRemote::mediaPlayerKeyNeeded):
+        (WebKit::MediaPlayerPrivateRemote::waitingForKeyChanged):
+        (WebKit::MediaPlayerPrivateRemote::initializationDataEncountered):
+        (WebKit::MediaPlayerPrivateRemote::resourceNotSupported):
+        (WebKit::MediaPlayerPrivateRemote::activeSourceBuffersChanged):
+        (WebKit::MediaPlayerPrivateRemote::getRawCookies const):
+        * WebProcess/GPU/media/MediaPlayerPrivateRemote.h:
+        * WebProcess/GPU/media/cocoa/MediaPlayerPrivateRemoteCocoa.mm:
+        (WebKit::MediaPlayerPrivateRemote::MediaPlayerPrivateRemote):
+
 2021-06-04  Wenson Hsieh  <[email protected]>
 
         Remove the unused `sourceElementID` argument in `Document::updateIsPlayingMedia` and related code

Modified: trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp (278495 => 278496)


--- trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp	2021-06-04 20:24:37 UTC (rev 278495)
+++ trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp	2021-06-04 20:41:45 UTC (rev 278496)
@@ -106,7 +106,7 @@
     , m_logIdentifier(player->mediaPlayerLogIdentifier())
     ,
 #endif
-      m_player(player)
+      m_player(makeWeakPtr(*player))
     , m_mediaResourceLoader(*player->createResourceLoader())
     , m_manager(manager)
     , m_remoteEngineIdentifier(engineIdentifier)
@@ -133,7 +133,11 @@
 
 void MediaPlayerPrivateRemote::prepareForPlayback(bool privateMode, MediaPlayer::Preload preload, bool preservesPitch, bool prepare)
 {
-    auto scale = m_player->playerContentsScale();
+    auto player = makeRefPtr(m_player.get());
+    if (!player)
+        return;
+
+    auto scale = player->playerContentsScale();
     auto preferredDynamicRangeMode = m_player->preferredDynamicRangeMode();
 
     connection().sendWithAsyncReply(Messages::RemoteMediaPlayerProxy::PrepareForPlayback(privateMode, preload, preservesPitch, prepare, scale, preferredDynamicRangeMode), [weakThis = makeWeakPtr(*this), this](auto inlineLayerHostingContextId) mutable {
@@ -143,9 +147,13 @@
         if (!inlineLayerHostingContextId)
             return;
 
+        auto player = makeRefPtr(m_player.get());
+        if (!player)
+            return;
+
         m_videoLayer = createVideoLayerRemote(this, inlineLayerHostingContextId.value());
 #if PLATFORM(COCOA)
-        m_videoLayerManager->setVideoLayer(m_videoLayer.get(), snappedIntRect(m_player->playerContentBoxRect()).size());
+        m_videoLayerManager->setVideoLayer(m_videoLayer.get(), snappedIntRect(player->playerContentBoxRect()).size());
 #endif
     }, m_id);
 }
@@ -169,7 +177,8 @@
         if (!createExtension()) {
             WTFLogAlways("Unable to create sandbox extension handle for GPUProcess url.\n");
             m_cachedState.networkState = MediaPlayer::NetworkState::FormatError;
-            m_player->networkStateChanged();
+            if (auto player = makeRefPtr(m_player.get()); player)
+                player->networkStateChanged();
             return;
         }
 
@@ -180,8 +189,12 @@
         if (!weakThis)
             return;
 
+        auto player = makeRefPtr(m_player.get());
+        if (!player)
+            return;
+
         m_configuration = WTFMove(configuration);
-        m_player->mediaEngineUpdated();
+        player->mediaEngineUpdated();
     }, m_id);
 }
 
@@ -303,31 +316,36 @@
 void MediaPlayerPrivateRemote::networkStateChanged(RemoteMediaPlayerState&& state)
 {
     updateCachedState(WTFMove(state));
-    m_player->networkStateChanged();
+    if (auto player = makeRefPtr(m_player.get()); player)
+        player->networkStateChanged();
 }
 
 void MediaPlayerPrivateRemote::setReadyState(MediaPlayer::ReadyState readyState)
 {
     m_cachedState.readyState = readyState;
-    m_player->readyStateChanged();
+    if (auto player = makeRefPtr(m_player.get()); player)
+        player->readyStateChanged();
 }
 
 void MediaPlayerPrivateRemote::readyStateChanged(RemoteMediaPlayerState&& state)
 {
     updateCachedState(WTFMove(state));
-    m_player->readyStateChanged();
+    if (auto player = makeRefPtr(m_player.get()); player)
+        player->readyStateChanged();
 }
 
 void MediaPlayerPrivateRemote::volumeChanged(double volume)
 {
     m_volume = volume;
-    m_player->volumeChanged(volume);
+    if (auto player = makeRefPtr(m_player.get()); player)
+        player->volumeChanged(volume);
 }
 
 void MediaPlayerPrivateRemote::muteChanged(bool muted)
 {
     m_muted = muted;
-    m_player->muteChanged(muted);
+    if (auto player = makeRefPtr(m_player.get()); player)
+        player->muteChanged(muted);
 }
 
 void MediaPlayerPrivateRemote::timeChanged(RemoteMediaPlayerState&& state)
@@ -334,19 +352,22 @@
 {
     m_seeking = false;
     updateCachedState(WTFMove(state));
-    m_player->timeChanged();
+    if (auto player = makeRefPtr(m_player.get()); player)
+        player->timeChanged();
 }
 
 void MediaPlayerPrivateRemote::durationChanged(RemoteMediaPlayerState&& state)
 {
     updateCachedState(WTFMove(state));
-    m_player->durationChanged();
+    if (auto player = makeRefPtr(m_player.get()); player)
+        player->durationChanged();
 }
 
 void MediaPlayerPrivateRemote::rateChanged(double rate)
 {
     m_rate = rate;
-    m_player->rateChanged();
+    if (auto player = makeRefPtr(m_player.get()); player)
+        player->rateChanged();
 }
 
 void MediaPlayerPrivateRemote::playbackStateChanged(bool paused, MediaTime&& mediaTime, MonotonicTime&& wallTime)
@@ -354,25 +375,29 @@
     m_cachedState.paused = paused;
     m_cachedMediaTime = mediaTime;
     m_cachedMediaTimeQueryTime = wallTime;
-    m_player->playbackStateChanged();
+    if (auto player = makeRefPtr(m_player.get()); player)
+        player->playbackStateChanged();
 }
 
 void MediaPlayerPrivateRemote::engineFailedToLoad(long platformErrorCode)
 {
     m_platformErrorCode = platformErrorCode;
-    m_player->remoteEngineFailedToLoad();
+    if (auto player = makeRefPtr(m_player.get()); player)
+        player->remoteEngineFailedToLoad();
 }
 
 void MediaPlayerPrivateRemote::characteristicChanged(RemoteMediaPlayerState&& state)
 {
     updateCachedState(WTFMove(state));
-    m_player->characteristicChanged();
+    if (auto player = makeRefPtr(m_player.get()); player)
+        player->characteristicChanged();
 }
 
 void MediaPlayerPrivateRemote::sizeChanged(WebCore::FloatSize naturalSize)
 {
     m_cachedState.naturalSize = naturalSize;
-    m_player->sizeChanged();
+    if (auto player = makeRefPtr(m_player.get()); player)
+        player->sizeChanged();
 }
 
 void MediaPlayerPrivateRemote::currentTimeChanged(const MediaTime& mediaTime, const MonotonicTime& queryTime)
@@ -384,13 +409,15 @@
 void MediaPlayerPrivateRemote::firstVideoFrameAvailable()
 {
     INFO_LOG(LOGIDENTIFIER);
-    m_player->firstVideoFrameAvailable();
+    if (auto player = makeRefPtr(m_player.get()); player)
+        player->firstVideoFrameAvailable();
 }
 
 void MediaPlayerPrivateRemote::renderingModeChanged()
 {
     INFO_LOG(LOGIDENTIFIER);
-    m_player->renderingModeChanged();
+    if (auto player = makeRefPtr(m_player.get()); player)
+        player->renderingModeChanged();
 }
 
 String MediaPlayerPrivateRemote::engineDescription() const
@@ -420,7 +447,8 @@
 
 void MediaPlayerPrivateRemote::acceleratedRenderingStateChanged()
 {
-    connection().send(Messages::RemoteMediaPlayerProxy::AcceleratedRenderingStateChanged(m_player->supportsAcceleratedRendering()), m_id);
+    if (auto player = makeRefPtr(m_player.get()); player)
+        connection().send(Messages::RemoteMediaPlayerProxy::AcceleratedRenderingStateChanged(player->supportsAcceleratedRendering()), m_id);
 }
 
 #if ENABLE(WIRELESS_PLAYBACK_TARGET)
@@ -517,7 +545,8 @@
         return;
 #endif
 
-    m_player->addAudioTrack(addResult.iterator->value);
+    if (auto player = makeRefPtr(m_player.get()); player)
+        m_player->addAudioTrack(addResult.iterator->value);
 }
 
 void MediaPlayerPrivateRemote::removeRemoteAudioTrack(TrackPrivateRemoteIdentifier identifier)
@@ -525,7 +554,8 @@
     ASSERT(m_audioTracks.contains(identifier));
 
     if (auto* track = m_audioTracks.get(identifier)) {
-        m_player->removeAudioTrack(*track);
+        if (auto player = makeRefPtr(m_player.get()); player)
+            player->removeAudioTrack(*track);
         m_audioTracks.remove(identifier);
     }
 }
@@ -553,7 +583,8 @@
         return;
 #endif
 
-    m_player->addTextTrack(addResult.iterator->value);
+    if (auto player = makeRefPtr(m_player.get()); player)
+        player->addTextTrack(addResult.iterator->value);
 }
 
 void MediaPlayerPrivateRemote::removeRemoteTextTrack(TrackPrivateRemoteIdentifier identifier)
@@ -561,7 +592,8 @@
     ASSERT(m_textTracks.contains(identifier));
 
     if (auto* track = m_textTracks.get(identifier)) {
-        m_player->removeTextTrack(*track);
+        if (auto player = makeRefPtr(m_player.get()); player)
+            player->removeTextTrack(*track);
         m_textTracks.remove(identifier);
     }
 }
@@ -671,7 +703,8 @@
         return;
 #endif
 
-    m_player->addVideoTrack(addResult.iterator->value);
+    if (auto player = makeRefPtr(m_player.get()); player)
+        player->addVideoTrack(addResult.iterator->value);
 }
 
 void MediaPlayerPrivateRemote::removeRemoteVideoTrack(TrackPrivateRemoteIdentifier identifier)
@@ -679,7 +712,8 @@
     ASSERT(m_videoTracks.contains(identifier));
 
     if (auto* track = m_videoTracks.get(identifier)) {
-        m_player->removeVideoTrack(*track);
+        if (auto player = makeRefPtr(m_player.get()); player)
+            player->removeVideoTrack(*track);
         m_videoTracks.remove(identifier);
     }
 }
@@ -701,8 +735,12 @@
             if (!weakThis)
                 return;
 
+            auto player = makeRefPtr(m_player.get());
+            if (!player)
+                return;
+
             m_configuration = WTFMove(configuration);
-            m_player->mediaEngineUpdated();
+            player->mediaEngineUpdated();
         }, m_id);
         m_mediaSourcePrivate = MediaSourcePrivateRemote::create(m_manager.gpuProcessConnection(), identifier, m_manager.typeCache(m_remoteEngineIdentifier), *this, client);
 
@@ -713,8 +751,12 @@
         if (!weakThis)
             return;
 
+        auto player = makeRefPtr(m_player.get());
+        if (!player)
+            return;
+
         m_cachedState.networkState = MediaPlayer::NetworkState::FormatError;
-        m_player->networkStateChanged();
+        player->networkStateChanged();
     });
 }
 #endif
@@ -726,8 +768,12 @@
         if (!weakThis)
             return;
 
+        auto player = makeRefPtr(m_player.get());
+        if (!player)
+            return;
+
         m_cachedState.networkState = MediaPlayer::NetworkState::FormatError;
-        m_player->networkStateChanged();
+        player->networkStateChanged();
     });
 }
 #endif
@@ -947,7 +993,8 @@
 void MediaPlayerPrivateRemote::currentPlaybackTargetIsWirelessChanged(bool isCurrentPlaybackTargetWireless)
 {
     m_isCurrentPlaybackTargetWireless = isCurrentPlaybackTargetWireless;
-    m_player->currentPlaybackTargetIsWirelessChanged(isCurrentPlaybackTargetWireless);
+    if (auto player = makeRefPtr(m_player.get()); player)
+        player->currentPlaybackTargetIsWirelessChanged(isCurrentPlaybackTargetWireless);
 }
 
 bool MediaPlayerPrivateRemote::isCurrentPlaybackTargetWireless() const
@@ -1080,7 +1127,8 @@
 
 void MediaPlayerPrivateRemote::mediaPlayerKeyNeeded(IPC::DataReference&& message)
 {
-    m_player->keyNeeded(Uint8Array::create(message.data(), message.size()).ptr());
+    if (auto player = makeRefPtr(m_player.get()); player)
+        player->keyNeeded(Uint8Array::create(message.data(), message.size()).ptr());
 }
 #endif
 
@@ -1106,13 +1154,15 @@
 void MediaPlayerPrivateRemote::waitingForKeyChanged(bool waitingForKey)
 {
     m_waitingForKey = waitingForKey;
-    m_player->waitingForKeyChanged();
+    if (auto player = makeRefPtr(m_player.get()); player)
+        player->waitingForKeyChanged();
 }
 
 void MediaPlayerPrivateRemote::initializationDataEncountered(const String& initDataType, IPC::DataReference&& initData)
 {
     auto initDataBuffer = ArrayBuffer::create(initData.data(), initData.size());
-    m_player->initializationDataEncountered(initDataType, WTFMove(initDataBuffer));
+    if (auto player = makeRefPtr(m_player.get()); player)
+        player->initializationDataEncountered(initDataType, WTFMove(initDataBuffer));
 }
 
 bool MediaPlayerPrivateRemote::waitingForKey() const
@@ -1286,18 +1336,21 @@
 
 void MediaPlayerPrivateRemote::resourceNotSupported()
 {
-    m_player->resourceNotSupported();
+    if (auto player = makeRefPtr(m_player.get()); player)
+        player->resourceNotSupported();
 }
 
 void MediaPlayerPrivateRemote::activeSourceBuffersChanged()
 {
-    m_player->activeSourceBuffersChanged();
+    if (auto player = makeRefPtr(m_player.get()); player)
+        player->activeSourceBuffersChanged();
 }
 
 #if PLATFORM(IOS_FAMILY)
 void MediaPlayerPrivateRemote::getRawCookies(const URL& url, WebCore::MediaPlayerClient::GetRawCookiesCallback&& completionHandler) const
 {
-    m_player->getRawCookies(url, WTFMove(completionHandler));
+    if (auto player = makeRefPtr(m_player.get()); player)
+        player->getRawCookies(url, WTFMove(completionHandler));
 }
 #endif
 

Modified: trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h (278495 => 278496)


--- trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h	2021-06-04 20:24:37 UTC (rev 278495)
+++ trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h	2021-06-04 20:41:45 UTC (rev 278496)
@@ -87,7 +87,7 @@
     WebCore::MediaPlayerEnums::MediaEngineIdentifier remoteEngineIdentifier() const { return m_remoteEngineIdentifier; }
     WebCore::MediaPlayerIdentifier itentifier() const { return m_id; }
     IPC::Connection& connection() const { return m_manager.gpuProcessConnection().connection(); }
-    WebCore::MediaPlayer* player() const { return m_player; }
+    WebCore::MediaPlayer* player() const { return m_player.get(); }
 
     WebCore::MediaPlayer::ReadyState readyState() const final { return m_cachedState.readyState; }
     void setReadyState(WebCore::MediaPlayer::ReadyState);
@@ -391,7 +391,7 @@
 
     bool performTaskAtMediaTime(Function<void()>&&, const MediaTime&) final;
 
-    WebCore::MediaPlayer* m_player { nullptr };
+    WeakPtr<WebCore::MediaPlayer> m_player;
     Ref<WebCore::PlatformMediaResourceLoader> m_mediaResourceLoader;
 #if PLATFORM(COCOA)
     UniqueRef<WebCore::VideoLayerManager> m_videoLayerManager;

Modified: trunk/Source/WebKit/WebProcess/GPU/media/cocoa/MediaPlayerPrivateRemoteCocoa.mm (278495 => 278496)


--- trunk/Source/WebKit/WebProcess/GPU/media/cocoa/MediaPlayerPrivateRemoteCocoa.mm	2021-06-04 20:24:37 UTC (rev 278495)
+++ trunk/Source/WebKit/WebProcess/GPU/media/cocoa/MediaPlayerPrivateRemoteCocoa.mm	2021-06-04 20:41:45 UTC (rev 278496)
@@ -45,7 +45,7 @@
     : m_logger(player->mediaPlayerLogger())
     , m_logIdentifier(player->mediaPlayerLogIdentifier())
 #endif
-    , m_player(player)
+    , m_player(makeWeakPtr(*player))
     , m_mediaResourceLoader(*player->createResourceLoader())
     , m_videoLayerManager(makeUniqueRef<VideoLayerManagerObjC>(logger(), logIdentifier()))
     , m_manager(manager)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to