diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebCore/Modules/webaudio/AudioParamTimeline.cpp | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Source/WebCore/Modules/webaudio/AudioParamTimeline.cpp')
-rw-r--r-- | Source/WebCore/Modules/webaudio/AudioParamTimeline.cpp | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/Source/WebCore/Modules/webaudio/AudioParamTimeline.cpp b/Source/WebCore/Modules/webaudio/AudioParamTimeline.cpp index 1c7e4e5f8..fdc1d3c7c 100644 --- a/Source/WebCore/Modules/webaudio/AudioParamTimeline.cpp +++ b/Source/WebCore/Modules/webaudio/AudioParamTimeline.cpp @@ -80,19 +80,21 @@ void AudioParamTimeline::insertEvent(const ParamEvent& event) if (!isValid) return; - std::lock_guard<std::mutex> lock(m_eventsMutex); + std::lock_guard<Lock> lock(m_eventsMutex); unsigned i = 0; float insertTime = event.time(); - for (i = 0; i < m_events.size(); ++i) { + for (auto& paramEvent : m_events) { // Overwrite same event type and time. - if (m_events[i].time() == insertTime && m_events[i].type() == event.type()) { - m_events[i] = event; + if (paramEvent.time() == insertTime && paramEvent.type() == event.type()) { + paramEvent = event; return; } - if (m_events[i].time() > insertTime) + if (paramEvent.time() > insertTime) break; + + ++i; } m_events.insert(i, event); @@ -100,7 +102,7 @@ void AudioParamTimeline::insertEvent(const ParamEvent& event) void AudioParamTimeline::cancelScheduledValues(float startTime) { - std::lock_guard<std::mutex> lock(m_eventsMutex); + std::lock_guard<Lock> lock(m_eventsMutex); // Remove all events starting at startTime. for (unsigned i = 0; i < m_events.size(); ++i) { @@ -111,13 +113,11 @@ void AudioParamTimeline::cancelScheduledValues(float startTime) } } -float AudioParamTimeline::valueForContextTime(AudioContext* context, float defaultValue, bool& hasValue) +float AudioParamTimeline::valueForContextTime(AudioContext& context, float defaultValue, bool& hasValue) { - ASSERT(context); - { - std::unique_lock<std::mutex> lock(m_eventsMutex, std::try_to_lock); - if (!lock.owns_lock() || !context || !m_events.size() || context->currentTime() < m_events[0].time()) { + std::unique_lock<Lock> lock(m_eventsMutex, std::try_to_lock); + if (!lock.owns_lock() || !m_events.size() || context.currentTime() < m_events[0].time()) { hasValue = false; return defaultValue; } @@ -125,8 +125,8 @@ float AudioParamTimeline::valueForContextTime(AudioContext* context, float defau // Ask for just a single value. float value; - double sampleRate = context->sampleRate(); - double startTime = context->currentTime(); + double sampleRate = context.sampleRate(); + double startTime = context.currentTime(); double endTime = startTime + 1.1 / sampleRate; // time just beyond one sample-frame double controlRate = sampleRate / AudioNode::ProcessingSizeInFrames; // one parameter change per render quantum value = valuesForTimeRange(startTime, endTime, defaultValue, &value, 1, sampleRate, controlRate); @@ -138,7 +138,7 @@ float AudioParamTimeline::valueForContextTime(AudioContext* context, float defau float AudioParamTimeline::valuesForTimeRange(double startTime, double endTime, float defaultValue, float* values, unsigned numberOfValues, double sampleRate, double controlRate) { // We can't contend the lock in the realtime audio thread. - std::unique_lock<std::mutex> lock(m_eventsMutex, std::try_to_lock); + std::unique_lock<Lock> lock(m_eventsMutex, std::try_to_lock); if (!lock.owns_lock()) { if (values) { for (unsigned i = 0; i < numberOfValues; ++i) |