| Index: third_party/WebKit/Source/modules/webaudio/OfflineAudioContext.cpp
|
| diff --git a/third_party/WebKit/Source/modules/webaudio/OfflineAudioContext.cpp b/third_party/WebKit/Source/modules/webaudio/OfflineAudioContext.cpp
|
| index bf0da224144f6cac26f789b0ad6028ca6bc19895..b841030a4a2a57ba255de22b39391b3c5e97f2aa 100644
|
| --- a/third_party/WebKit/Source/modules/webaudio/OfflineAudioContext.cpp
|
| +++ b/third_party/WebKit/Source/modules/webaudio/OfflineAudioContext.cpp
|
| @@ -36,8 +36,10 @@
|
| #include "modules/webaudio/OfflineAudioCompletionEvent.h"
|
| #include "modules/webaudio/OfflineAudioDestinationNode.h"
|
|
|
| +#include "platform/CrossThreadFunctional.h"
|
| #include "platform/Histogram.h"
|
| #include "platform/audio/AudioUtilities.h"
|
| +#include "public/platform/Platform.h"
|
|
|
| namespace blink {
|
|
|
| @@ -374,12 +376,17 @@ void OfflineAudioContext::handlePostOfflineRenderTasks() {
|
|
|
| // OfflineGraphAutoLocker here locks the audio graph for the same reason
|
| // above in |handlePreOfflineRenderTasks|.
|
| - OfflineGraphAutoLocker locker(this);
|
| + bool didRemove = false;
|
| + {
|
| + OfflineGraphAutoLocker locker(this);
|
| +
|
| + deferredTaskHandler().breakConnections();
|
| + didRemove = releaseFinishedSourceNodes();
|
| + deferredTaskHandler().handleDeferredTasks();
|
| + deferredTaskHandler().requestToDeleteHandlersOnMainThread();
|
| + }
|
|
|
| - deferredTaskHandler().breakConnections();
|
| - releaseFinishedSourceNodes();
|
| - deferredTaskHandler().handleDeferredTasks();
|
| - deferredTaskHandler().requestToDeleteHandlersOnMainThread();
|
| + removeFinishedSourceNodes(didRemove);
|
| }
|
|
|
| OfflineAudioDestinationHandler& OfflineAudioContext::destinationHandler() {
|
|
|