From 177e5210e09ee4b5906e5d7db34154fae4ec76c6 Mon Sep 17 00:00:00 2001 From: Jelle Raaijmakers Date: Mon, 14 Oct 2024 23:43:00 +0200 Subject: [PATCH] LibWeb: Move 'queue a media element task' to BaseAudioContext We need these steps to be available for the yet to be implemented `BaseAudioContext.decodeAudioData()`. --- Userland/Libraries/LibWeb/WebAudio/AudioContext.cpp | 6 ------ Userland/Libraries/LibWeb/WebAudio/AudioContext.h | 2 -- Userland/Libraries/LibWeb/WebAudio/BaseAudioContext.cpp | 7 +++++++ Userland/Libraries/LibWeb/WebAudio/BaseAudioContext.h | 7 ++++++- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/Userland/Libraries/LibWeb/WebAudio/AudioContext.cpp b/Userland/Libraries/LibWeb/WebAudio/AudioContext.cpp index faacd060b9c..603efc2cc74 100644 --- a/Userland/Libraries/LibWeb/WebAudio/AudioContext.cpp +++ b/Userland/Libraries/LibWeb/WebAudio/AudioContext.cpp @@ -298,12 +298,6 @@ WebIDL::ExceptionOr> AudioContext::close() return JS::NonnullGCPtr { verify_cast(*promise->promise()) }; } -void AudioContext::queue_a_media_element_task(Function steps) -{ - auto task = HTML::Task::create(vm(), m_media_element_event_task_source.source, HTML::current_settings_object().responsible_document(), JS::create_heap_function(heap(), move(steps))); - HTML::main_thread_event_loop().task_queue().add(move(task)); -} - // FIXME: Actually implement the rendering thread bool AudioContext::start_rendering_audio_graph() { diff --git a/Userland/Libraries/LibWeb/WebAudio/AudioContext.h b/Userland/Libraries/LibWeb/WebAudio/AudioContext.h index b0930c497cc..a1155f56781 100644 --- a/Userland/Libraries/LibWeb/WebAudio/AudioContext.h +++ b/Userland/Libraries/LibWeb/WebAudio/AudioContext.h @@ -52,9 +52,7 @@ private: Vector> m_pending_promises; Vector> m_pending_resume_promises; bool m_suspended_by_user = false; - HTML::UniqueTaskSource m_media_element_event_task_source {}; - void queue_a_media_element_task(Function steps); bool start_rendering_audio_graph(); }; diff --git a/Userland/Libraries/LibWeb/WebAudio/BaseAudioContext.cpp b/Userland/Libraries/LibWeb/WebAudio/BaseAudioContext.cpp index f290d462e92..330f9ecddc7 100644 --- a/Userland/Libraries/LibWeb/WebAudio/BaseAudioContext.cpp +++ b/Userland/Libraries/LibWeb/WebAudio/BaseAudioContext.cpp @@ -1,6 +1,7 @@ /* * Copyright (c) 2023, Luke Wilde * Copyright (c) 2024, Shannon Booth + * Copyright (c) 2024, Jelle Raaijmakers * * SPDX-License-Identifier: BSD-2-Clause */ @@ -113,4 +114,10 @@ WebIDL::ExceptionOr BaseAudioContext::verify_audio_options_inside_nominal_ return {}; } +void BaseAudioContext::queue_a_media_element_task(Function steps) +{ + auto task = HTML::Task::create(vm(), m_media_element_event_task_source.source, HTML::current_settings_object().responsible_document(), JS::create_heap_function(heap(), move(steps))); + HTML::main_thread_event_loop().task_queue().add(move(task)); +} + } diff --git a/Userland/Libraries/LibWeb/WebAudio/BaseAudioContext.h b/Userland/Libraries/LibWeb/WebAudio/BaseAudioContext.h index 4a487579b09..2e0900dd571 100644 --- a/Userland/Libraries/LibWeb/WebAudio/BaseAudioContext.h +++ b/Userland/Libraries/LibWeb/WebAudio/BaseAudioContext.h @@ -1,6 +1,7 @@ /* * Copyright (c) 2023, Luke Wilde * Copyright (c) 2024, Shannon Booth + * Copyright (c) 2024, Jelle Raaijmakers * * SPDX-License-Identifier: BSD-2-Clause */ @@ -61,17 +62,21 @@ public: protected: explicit BaseAudioContext(JS::Realm&, float m_sample_rate = 0); - JS::NonnullGCPtr m_destination; + void queue_a_media_element_task(Function steps); virtual void initialize(JS::Realm&) override; virtual void visit_edges(Cell::Visitor&) override; + JS::NonnullGCPtr m_destination; + private: float m_sample_rate { 0 }; double m_current_time { 0 }; Bindings::AudioContextState m_control_thread_state = Bindings::AudioContextState::Suspended; Bindings::AudioContextState m_rendering_thread_state = Bindings::AudioContextState::Suspended; + + HTML::UniqueTaskSource m_media_element_event_task_source {}; }; }