summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/platform/audio/audio_destination.cc
diff options
context:
space:
mode:
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.cc23
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);
}