diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/platform/audio/audio_destination.cc')
-rw-r--r-- | chromium/third_party/blink/renderer/platform/audio/audio_destination.cc | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/chromium/third_party/blink/renderer/platform/audio/audio_destination.cc b/chromium/third_party/blink/renderer/platform/audio/audio_destination.cc index 642122e137a..8391ae03509 100644 --- a/chromium/third_party/blink/renderer/platform/audio/audio_destination.cc +++ b/chromium/third_party/blink/renderer/platform/audio/audio_destination.cc @@ -326,10 +326,25 @@ void AudioDestination::Start() { SetDeviceState(DeviceState::kRunning); } +void AudioDestination::SetWorkletTaskRunner( + scoped_refptr<base::SingleThreadTaskRunner> worklet_task_runner) { + DCHECK(IsMainThread()); + TRACE_EVENT0("webaudio", "AudioDestination::SetWorkletTaskRunner"); + + if (worklet_task_runner_) { + DCHECK_EQ(worklet_task_runner_, worklet_task_runner); + return; + } + + // The dual-thread rendering kicks off, so update the earmark frames + // accordingly. + fifo_->SetEarmarkFrames(callback_buffer_size_); + worklet_task_runner_ = std::move(worklet_task_runner); +} + void AudioDestination::StartWithWorkletTaskRunner( scoped_refptr<base::SingleThreadTaskRunner> worklet_task_runner) { DCHECK(IsMainThread()); - DCHECK_EQ(worklet_task_runner_, nullptr); TRACE_EVENT0("webaudio", "AudioDestination::StartWithWorkletTaskRunner"); SendLogMessage(String::Format("%s", __func__)); @@ -337,11 +352,7 @@ void AudioDestination::StartWithWorkletTaskRunner( return; } - // The dual-thread rendering kicks off, so updates the earmark frames - // accordingly. - fifo_->SetEarmarkFrames(callback_buffer_size_); - - worklet_task_runner_ = std::move(worklet_task_runner); + SetWorkletTaskRunner(worklet_task_runner); web_audio_device_->Start(); SetDeviceState(DeviceState::kRunning); } |