Synchronize setting of panner node model and processing
[WebKit-https.git] / Source / WebCore / Modules / webaudio / PannerNode.h
index c7766044fe84ac34cc901cf75086b06aa2c0bacd..375c8983d0c6d405e876c0a41b10c011dbe4f8c2 100644 (file)
@@ -100,24 +100,24 @@ public:
     bool setDistanceModel(unsigned); // Returns true on success.
     void setDistanceModel(const String&);
 
-    float refDistance() { return static_cast<float>(m_distanceEffect.refDistance()); }
-    void setRefDistance(float refDistance) { m_distanceEffect.setRefDistance(refDistance); }
+    double refDistance() { return m_distanceEffect.refDistance(); }
+    void setRefDistance(double refDistance) { m_distanceEffect.setRefDistance(refDistance); }
 
-    float maxDistance() { return static_cast<float>(m_distanceEffect.maxDistance()); }
-    void setMaxDistance(float maxDistance) { m_distanceEffect.setMaxDistance(maxDistance); }
+    double maxDistance() { return m_distanceEffect.maxDistance(); }
+    void setMaxDistance(double maxDistance) { m_distanceEffect.setMaxDistance(maxDistance); }
 
-    float rolloffFactor() { return static_cast<float>(m_distanceEffect.rolloffFactor()); }
-    void setRolloffFactor(float rolloffFactor) { m_distanceEffect.setRolloffFactor(rolloffFactor); }
+    double rolloffFactor() { return m_distanceEffect.rolloffFactor(); }
+    void setRolloffFactor(double rolloffFactor) { m_distanceEffect.setRolloffFactor(rolloffFactor); }
 
     // Sound cones - angles in degrees
-    float coneInnerAngle() const { return static_cast<float>(m_coneEffect.innerAngle()); }
-    void setConeInnerAngle(float angle) { m_coneEffect.setInnerAngle(angle); }
+    double coneInnerAngle() const { return m_coneEffect.innerAngle(); }
+    void setConeInnerAngle(double angle) { m_coneEffect.setInnerAngle(angle); }
 
-    float coneOuterAngle() const { return static_cast<float>(m_coneEffect.outerAngle()); }
-    void setConeOuterAngle(float angle) { m_coneEffect.setOuterAngle(angle); }
+    double coneOuterAngle() const { return m_coneEffect.outerAngle(); }
+    void setConeOuterAngle(double angle) { m_coneEffect.setOuterAngle(angle); }
 
-    float coneOuterGain() const { return static_cast<float>(m_coneEffect.outerGain()); }
-    void setConeOuterGain(float angle) { m_coneEffect.setOuterGain(angle); }
+    double coneOuterGain() const { return m_coneEffect.outerGain(); }
+    void setConeOuterGain(double angle) { m_coneEffect.setOuterGain(angle); }
 
     void getAzimuthElevation(double* outAzimuth, double* outElevation);
     float dopplerRate();
@@ -154,6 +154,9 @@ private:
     float m_lastGain;
 
     unsigned m_connectionCount;
+
+    // Synchronize process() and setPanningModel() which can change the panner.
+    mutable Mutex m_pannerLock;
 };
 
 } // namespace WebCore