Skip to content

Commit

Permalink
MediaPlayer::m_client should be a WeakPtr
Browse files Browse the repository at this point in the history
https://bugs.webkit.org/show_bug.cgi?id=261191
rdar://115035575

Reviewed by Eric Carlson.

Changed MediaPlayer::m_client from a MediaPlayerClient* to a WeakPtr<MediaPlayerClient>.

* Source/WebCore/platform/graphics/MediaPlayer.cpp:
(WebCore::MediaPlayer::MediaPlayer):
(WebCore::MediaPlayer::invalidate):
* Source/WebCore/platform/graphics/MediaPlayer.h:
* Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.h:

Canonical link: https://commits.webkit.org/267676@main
  • Loading branch information
aestes committed Sep 6, 2023
1 parent f790c5f commit bee8623
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 6 deletions.
6 changes: 3 additions & 3 deletions Source/WebCore/platform/graphics/MediaPlayer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -452,15 +452,15 @@ Ref<MediaPlayer> MediaPlayer::create(MediaPlayerClient& client, MediaPlayerEnums
}

MediaPlayer::MediaPlayer(MediaPlayerClient& client)
: m_client(&client)
: m_client(client)
, m_reloadTimer(*this, &MediaPlayer::reloadTimerFired)
, m_private(makeUnique<NullMediaPlayerPrivate>(this))
, m_preferredDynamicRangeMode(DynamicRangeMode::Standard)
{
}

MediaPlayer::MediaPlayer(MediaPlayerClient& client, MediaPlayerEnums::MediaEngineIdentifier mediaEngineIdentifier)
: m_client(&client)
: m_client(client)
, m_reloadTimer(*this, &MediaPlayer::reloadTimerFired)
, m_private(makeUnique<NullMediaPlayerPrivate>(this))
, m_activeEngineIdentifier(mediaEngineIdentifier)
Expand All @@ -475,7 +475,7 @@ MediaPlayer::~MediaPlayer()

void MediaPlayer::invalidate()
{
m_client = &nullMediaPlayerClient();
m_client = nullMediaPlayerClient();
}

bool MediaPlayer::load(const URL& url, const ContentType& contentType, const String& keySystem, bool requiresRemotePlayback)
Expand Down
4 changes: 2 additions & 2 deletions Source/WebCore/platform/graphics/MediaPlayer.h
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ struct SeekTarget {
String toString() const;
};

class MediaPlayerClient {
class MediaPlayerClient : public CanMakeWeakPtr<MediaPlayerClient> {
public:
virtual ~MediaPlayerClient() = default;

Expand Down Expand Up @@ -757,7 +757,7 @@ class WEBCORE_EXPORT MediaPlayer : public MediaPlayerEnums, public ThreadSafeRef
const MediaPlayerFactory* nextMediaEngine(const MediaPlayerFactory*);
void reloadTimerFired();

MediaPlayerClient* m_client;
WeakPtr<MediaPlayerClient> m_client;
Timer m_reloadTimer;
std::unique_ptr<MediaPlayerPrivateInterface> m_private;
const MediaPlayerFactory* m_currentMediaEngine { nullptr };
Expand Down
6 changes: 5 additions & 1 deletion Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.h
Original file line number Diff line number Diff line change
Expand Up @@ -106,9 +106,13 @@ class RemoteVideoTrackProxy;
class RemoteMediaPlayerProxy final
: public RefCounted<RemoteMediaPlayerProxy>
, public WebCore::MediaPlayerClient
, public IPC::MessageReceiver {
, private IPC::MessageReceiver {
WTF_MAKE_FAST_ALLOCATED;
public:
using WebCore::MediaPlayerClient::WeakPtrImplType;
using WebCore::MediaPlayerClient::WeakValueType;
using WebCore::MediaPlayerClient::weakPtrFactory;

static Ref<RemoteMediaPlayerProxy> create(RemoteMediaPlayerManagerProxy&, WebCore::MediaPlayerIdentifier, Ref<IPC::Connection>&&, WebCore::MediaPlayerEnums::MediaEngineIdentifier, RemoteMediaPlayerProxyConfiguration&&, RemoteVideoFrameObjectHeap&, const WebCore::ProcessIdentity&);
~RemoteMediaPlayerProxy();

Expand Down

0 comments on commit bee8623

Please sign in to comment.