summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/modules/webaudio/panner_node.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/blink/renderer/modules/webaudio/panner_node.cc')
-rw-r--r--chromium/third_party/blink/renderer/modules/webaudio/panner_node.cc5
1 files changed, 5 insertions, 0 deletions
diff --git a/chromium/third_party/blink/renderer/modules/webaudio/panner_node.cc b/chromium/third_party/blink/renderer/modules/webaudio/panner_node.cc
index 4eae502e4c8..313adf9dc0e 100644
--- a/chromium/third_party/blink/renderer/modules/webaudio/panner_node.cc
+++ b/chromium/third_party/blink/renderer/modules/webaudio/panner_node.cc
@@ -390,6 +390,11 @@ bool PannerHandler::SetPanningModel(unsigned model) {
}
if (!panner_.get() || model != panning_model_) {
+ // We need the graph lock to secure the panner backend because
+ // BaseAudioContext::Handle{Pre,Post}RenderTasks() from the audio thread
+ // can touch it.
+ BaseAudioContext::GraphAutoLocker context_locker(Context());
+
// This synchronizes with process().
MutexLocker process_locker(process_lock_);
panner_ = Panner::Create(model, Context()->sampleRate(),