summaryrefslogtreecommitdiff
path: root/Source/WebCore/Modules/webaudio/AudioParamTimeline.cpp
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebCore/Modules/webaudio/AudioParamTimeline.cpp
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/WebCore/Modules/webaudio/AudioParamTimeline.cpp')
-rw-r--r--Source/WebCore/Modules/webaudio/AudioParamTimeline.cpp28
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)