LibMedia+LibWeb: Implement media pausing/resuming

This commit is contained in:
Zaggy1024 2025-09-27 15:13:45 -05:00 committed by Jelle Raaijmakers
parent 3ebaa0cd3f
commit ee587cfec4
Notes: github-actions[bot] 2025-10-28 00:34:31 +00:00
3 changed files with 17 additions and 3 deletions

View file

@ -92,7 +92,6 @@ PlaybackManager::PlaybackManager(NonnullRefPtr<MutexedDemuxer> const& demuxer, N
, m_audio_tracks(audio_tracks) , m_audio_tracks(audio_tracks)
, m_audio_track_datas(audio_track_datas) , m_audio_track_datas(audio_track_datas)
{ {
m_time_provider->resume();
} }
PlaybackManager::~PlaybackManager() PlaybackManager::~PlaybackManager()
@ -207,4 +206,14 @@ void PlaybackManager::disable_an_audio_track(Track const& track)
m_audio_sink->set_provider(track, nullptr); m_audio_sink->set_provider(track, nullptr);
} }
void PlaybackManager::play()
{
m_time_provider->resume();
}
void PlaybackManager::pause()
{
m_time_provider->pause();
}
} }

View file

@ -60,6 +60,9 @@ public:
void enable_an_audio_track(Track const& track); void enable_an_audio_track(Track const& track);
void disable_an_audio_track(Track const& track); void disable_an_audio_track(Track const& track);
void play();
void pause();
Function<void(DecoderError&&)> on_error; Function<void(DecoderError&&)> on_error;
private: private:

View file

@ -1775,7 +1775,8 @@ void HTMLMediaElement::notify_about_playing()
resolve_pending_play_promises(promises); resolve_pending_play_promises(promises);
}); });
// FIXME: Implement resuming in PlaybackManager. if (m_playback_manager)
m_playback_manager->play();
if (m_audio_tracks->has_enabled_track()) if (m_audio_tracks->has_enabled_track())
document().page().client().page_did_change_audio_play_state(AudioPlayState::Playing); document().page().client().page_did_change_audio_play_state(AudioPlayState::Playing);
@ -1800,7 +1801,8 @@ void HTMLMediaElement::set_paused(bool paused)
m_paused = paused; m_paused = paused;
if (m_paused) { if (m_paused) {
// FIXME: Implement pausing in PlaybackManager. if (m_playback_manager)
m_playback_manager->pause();
if (m_audio_tracks->has_enabled_track()) if (m_audio_tracks->has_enabled_track())
document().page().client().page_did_change_audio_play_state(AudioPlayState::Paused); document().page().client().page_did_change_audio_play_state(AudioPlayState::Paused);