Hi, MediaPlayerPrivate::cancelLoad() can be implemented by setting the state of playbin2 to NULL. This can be called at any time and will stop everything.
Created attachment 41160 [details] proposed patch
Comment on attachment 41160 [details] proposed patch > void MediaPlayerPrivate::cancelLoad() > { > - notImplemented(); > + if (m_networkState < MediaPlayer::Loading || m_networkState == MediaPlayer::Loaded) > + return; > + > + if (m_playBin) > + gst_element_set_state(m_playBin, GST_STATE_NULL); > } Both Mac and Win call updateStates() here after doing their media library magics; do you know if there is a reason why we don't need it?
(In reply to comment #2) > (From update of attachment 41160 [details]) > > void MediaPlayerPrivate::cancelLoad() > > { > > - notImplemented(); > > + if (m_networkState < MediaPlayer::Loading || m_networkState == MediaPlayer::Loaded) > > + return; > > + > > + if (m_playBin) > > + gst_element_set_state(m_playBin, GST_STATE_NULL); > > } > > Both Mac and Win call updateStates() here after doing their media library > magics; do you know if there is a reason why we don't need it? Hmm right. updateStates() is called when we receive the STATE_CHANGE message but we don't handle STATE_NULL there. Will send a new patch, thanks for spotting that ;)
Comment on attachment 41160 [details] proposed patch > void MediaPlayerPrivate::cancelLoad() > { > - notImplemented(); > + if (m_networkState < MediaPlayer::Loading || m_networkState == MediaPlayer::Loaded) > + return; > + > + if (m_playBin) > + gst_element_set_state(m_playBin, GST_STATE_NULL); > } According to further investigation by Philippe, updateStates is always called on element state transitions, so it is being done here.
Comment on attachment 41160 [details] proposed patch Clearing flags on attachment: 41160 Committed r49624: <http://trac.webkit.org/changeset/49624>
All reviewed patches have been landed. Closing bug.