Index: third_party/WebKit/Source/modules/webaudio/DeferredTaskHandler.cpp |
diff --git a/third_party/WebKit/Source/modules/webaudio/DeferredTaskHandler.cpp b/third_party/WebKit/Source/modules/webaudio/DeferredTaskHandler.cpp |
index 659be155fbd995e8dc6c7982925d553656ccb4f2..c5d791fa942fc8b46f1322435015382c8263eae2 100644 |
--- a/third_party/WebKit/Source/modules/webaudio/DeferredTaskHandler.cpp |
+++ b/third_party/WebKit/Source/modules/webaudio/DeferredTaskHandler.cpp |
@@ -179,6 +179,52 @@ void DeferredTaskHandler::processAutomaticPullNodes(size_t framesToProcess) |
m_renderingAutomaticPullNodes[i]->processIfNecessary(framesToProcess); |
} |
+void DeferredTaskHandler::addChangedChannelCountMode(AudioHandler* node) |
+{ |
+ ASSERT(isGraphOwner()); |
+ DCHECK(isMainThread()); |
+ m_deferredCountModeChange.add(node); |
+} |
+ |
+void DeferredTaskHandler::removeChangedChannelCountMode(AudioHandler* node) |
+{ |
+ ASSERT(isGraphOwner()); |
+ |
+ m_deferredCountModeChange.remove(node); |
+} |
+ |
+void DeferredTaskHandler::addChangedChannelInterpretation(AudioHandler* node) |
+{ |
+ ASSERT(isGraphOwner()); |
+ DCHECK(isMainThread()); |
+ m_deferredChannelInterpretationChange.add(node); |
+} |
+ |
+void DeferredTaskHandler::removeChangedChannelInterpretation(AudioHandler* node) |
+{ |
+ ASSERT(isGraphOwner()); |
+ |
+ m_deferredChannelInterpretationChange.remove(node); |
+} |
+ |
+void DeferredTaskHandler::updateChangedChannelCountMode() |
+{ |
+ ASSERT(isGraphOwner()); |
+ |
+ for (AudioHandler* node : m_deferredCountModeChange) |
+ node->updateChannelCountMode(); |
+ m_deferredCountModeChange.clear(); |
+} |
+ |
+void DeferredTaskHandler::updateChangedChannelInterpretation() |
+{ |
+ ASSERT(isGraphOwner()); |
+ |
+ for (AudioHandler* node : m_deferredChannelInterpretationChange) |
+ node->updateChannelInterpretation(); |
+ m_deferredChannelInterpretationChange.clear(); |
+} |
+ |
DeferredTaskHandler::DeferredTaskHandler() |
: m_automaticPullNodesNeedUpdating(false) |
, m_audioThread(0) |
@@ -200,6 +246,8 @@ DeferredTaskHandler::~DeferredTaskHandler() |
void DeferredTaskHandler::handleDeferredTasks() |
{ |
+ updateChangedChannelCountMode(); |
+ updateChangedChannelInterpretation(); |
handleDirtyAudioSummingJunctions(); |
handleDirtyAudioNodeOutputs(); |
updateAutomaticPullNodes(); |