1
0
Fork 0
mirror of https://github.com/LadybirdBrowser/ladybird.git synced 2025-06-11 02:13:56 +09:00

LibWeb: Move 'queue a media element task' to BaseAudioContext

We need these steps to be available for the yet to be implemented
`BaseAudioContext.decodeAudioData()`.
This commit is contained in:
Jelle Raaijmakers 2024-10-14 23:43:00 +02:00 committed by Andreas Kling
parent 273a46cc76
commit 177e5210e0
Notes: github-actions[bot] 2024-10-15 08:03:28 +00:00
4 changed files with 13 additions and 9 deletions

View file

@ -298,12 +298,6 @@ WebIDL::ExceptionOr<JS::NonnullGCPtr<JS::Promise>> AudioContext::close()
return JS::NonnullGCPtr { verify_cast<JS::Promise>(*promise->promise()) };
}
void AudioContext::queue_a_media_element_task(Function<void()> 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()
{

View file

@ -52,9 +52,7 @@ private:
Vector<JS::NonnullGCPtr<WebIDL::Promise>> m_pending_promises;
Vector<JS::NonnullGCPtr<WebIDL::Promise>> 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<void()> steps);
bool start_rendering_audio_graph();
};

View file

@ -1,6 +1,7 @@
/*
* Copyright (c) 2023, Luke Wilde <lukew@serenityos.org>
* Copyright (c) 2024, Shannon Booth <shannon@serenityos.org>
* Copyright (c) 2024, Jelle Raaijmakers <jelle@ladybird.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
@ -113,4 +114,10 @@ WebIDL::ExceptionOr<void> BaseAudioContext::verify_audio_options_inside_nominal_
return {};
}
void BaseAudioContext::queue_a_media_element_task(Function<void()> 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));
}
}

View file

@ -1,6 +1,7 @@
/*
* Copyright (c) 2023, Luke Wilde <lukew@serenityos.org>
* Copyright (c) 2024, Shannon Booth <shannon@serenityos.org>
* Copyright (c) 2024, Jelle Raaijmakers <jelle@ladybird.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
@ -61,17 +62,21 @@ public:
protected:
explicit BaseAudioContext(JS::Realm&, float m_sample_rate = 0);
JS::NonnullGCPtr<AudioDestinationNode> m_destination;
void queue_a_media_element_task(Function<void()> steps);
virtual void initialize(JS::Realm&) override;
virtual void visit_edges(Cell::Visitor&) override;
JS::NonnullGCPtr<AudioDestinationNode> 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 {};
};
}