Skip to content

Commit a087bcd

Browse files
emutavchieocanha
authored andcommitted
[GStreamer] change network state to idle when delaying the load
https://bugs.webkit.org/show_bug.cgi?id=305473 Reviewed by Xabier Rodriguez-Calvar. Sometimes applications create a <video> tag with 'preload="none"' and then remove the element from the DOM without ever starting playback. This results in the video element being leaked, because HTMLMediaElement::virtualHasPendingActivity() retains the element while its network state is still "Loading". See: #1594 This patch keeps the default behaviour of changing the NetworkState to "Loading", except in the case of a delayed load (the case triggered by preload="none"), in which it's set to Idle and therefore allowing the full destruction of the video element. Original author: Eugene Mutavchi <Ievgen_Mutavchi@comcast.com> * Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: (WebCore::MediaPlayerPrivateGStreamer::load): Reset NetworkState to Idle in case of delayed load. Set to Loading otherwise. Canonical link: https://commits.webkit.org/305578@main
1 parent f941b90 commit a087bcd

1 file changed

Lines changed: 1 addition & 1 deletion

File tree

Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,7 @@ void MediaPlayerPrivateGStreamer::load(const String& urlString)
370370

371371
// Reset network and ready states. Those will be set properly once
372372
// the pipeline pre-rolled.
373-
m_networkState = MediaPlayer::NetworkState::Loading;
373+
m_networkState = m_isDelayingLoad ? MediaPlayer::NetworkState::Idle : MediaPlayer::NetworkState::Loading;
374374
m_player->networkStateChanged();
375375
m_readyState = MediaPlayer::ReadyState::HaveNothing;
376376
m_player->readyStateChanged();

0 commit comments

Comments
 (0)