Chromium Code Reviews| Index: third_party/WebKit/Source/modules/webaudio/BaseAudioContext.cpp |
| diff --git a/third_party/WebKit/Source/modules/webaudio/BaseAudioContext.cpp b/third_party/WebKit/Source/modules/webaudio/BaseAudioContext.cpp |
| index 020e539047db244fcc9878bc8f9e5da1fe0beefa..e70e02f261dc63f3c917cab8641dbe81bbc3af15 100644 |
| --- a/third_party/WebKit/Source/modules/webaudio/BaseAudioContext.cpp |
| +++ b/third_party/WebKit/Source/modules/webaudio/BaseAudioContext.cpp |
| @@ -102,7 +102,8 @@ BaseAudioContext::BaseAudioContext(Document* document) |
| m_periodicWaveSine(nullptr), |
| m_periodicWaveSquare(nullptr), |
| m_periodicWaveSawtooth(nullptr), |
| - m_periodicWaveTriangle(nullptr) { |
| + m_periodicWaveTriangle(nullptr), |
| + m_outputPosition() { |
|
Raymond Toy
2016/11/04 17:51:40
Don't you want to initialize this to something? I
Mikhail
2016/11/07 18:28:03
this invokes "default" constructor for the structu
|
| // If mediaPlaybackRequiresUserGesture is enabled, cross origin iframes will |
| // require user gesture for the AudioContext to produce sound. |
| if (document->settings() && |
| @@ -135,7 +136,8 @@ BaseAudioContext::BaseAudioContext(Document* document, |
| m_periodicWaveSine(nullptr), |
| m_periodicWaveSquare(nullptr), |
| m_periodicWaveSawtooth(nullptr), |
| - m_periodicWaveTriangle(nullptr) {} |
| + m_periodicWaveTriangle(nullptr), |
| + m_outputPosition() {} |
| BaseAudioContext::~BaseAudioContext() { |
| deferredTaskHandler().contextWillBeDestroyed(); |
| @@ -706,7 +708,8 @@ void BaseAudioContext::handleStoppableSourceNodes() { |
| } |
| } |
| -void BaseAudioContext::handlePreRenderTasks() { |
| +void BaseAudioContext::handlePreRenderTasks( |
| + const AudioIOPosition& outputPosition) { |
| DCHECK(isAudioThread()); |
| // At the beginning of every render quantum, try to update the internal |
| @@ -724,6 +727,9 @@ void BaseAudioContext::handlePreRenderTasks() { |
| // Update the dirty state of the listener. |
| listener()->updateState(); |
| + // Update output timestamp. |
| + m_outputPosition = outputPosition; |
| + |
| unlock(); |
| } |
| } |
| @@ -817,6 +823,11 @@ bool BaseAudioContext::isAllowedToStart() const { |
| return false; |
| } |
| +AudioIOPosition BaseAudioContext::outputPosition() { |
| + AutoLocker locker(this); |
| + return m_outputPosition; |
| +} |
| + |
| void BaseAudioContext::rejectPendingResolvers() { |
| DCHECK(isMainThread()); |