diff options
-rw-r--r-- | chromium/third_party/blink/renderer/modules/webaudio/panner_node.cc | 5 |
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(), |