| Index: Source/modules/webaudio/AudioListener.h
|
| diff --git a/Source/modules/webaudio/AudioListener.h b/Source/modules/webaudio/AudioListener.h
|
| index dcd68dd42ba6717ec150bdcbfbc2a2d063219e7f..a2db467877e442ac057d264fd135de0a159f9907 100644
|
| --- a/Source/modules/webaudio/AudioListener.h
|
| +++ b/Source/modules/webaudio/AudioListener.h
|
| @@ -33,9 +33,12 @@
|
| #include "platform/geometry/FloatPoint3D.h"
|
| #include "wtf/PassRefPtr.h"
|
| #include "wtf/RefCounted.h"
|
| +#include "wtf/Vector.h"
|
|
|
| namespace WebCore {
|
|
|
| +class PannerNode;
|
| +
|
| // AudioListener maintains the state of the listener in the audio scene as defined in the OpenAL specification.
|
|
|
| class AudioListener : public ScriptWrappable, public RefCounted<AudioListener> {
|
| @@ -44,50 +47,59 @@ public:
|
| {
|
| return adoptRef(new AudioListener());
|
| }
|
| + virtual ~AudioListener();
|
|
|
| // Position
|
| void setPosition(float x, float y, float z) { setPosition(FloatPoint3D(x, y, z)); }
|
| - void setPosition(const FloatPoint3D &position) { m_position = position; }
|
| const FloatPoint3D& position() const { return m_position; }
|
|
|
| - // Orientation
|
| + // Orientation and Up-vector
|
| void setOrientation(float x, float y, float z, float upX, float upY, float upZ)
|
| {
|
| setOrientation(FloatPoint3D(x, y, z));
|
| setUpVector(FloatPoint3D(upX, upY, upZ));
|
| }
|
| - void setOrientation(const FloatPoint3D &orientation) { m_orientation = orientation; }
|
| const FloatPoint3D& orientation() const { return m_orientation; }
|
| -
|
| - // Up-vector
|
| - void setUpVector(const FloatPoint3D &upVector) { m_upVector = upVector; }
|
| const FloatPoint3D& upVector() const { return m_upVector; }
|
|
|
| // Velocity
|
| void setVelocity(float x, float y, float z) { setVelocity(FloatPoint3D(x, y, z)); }
|
| - void setVelocity(const FloatPoint3D &velocity) { m_velocity = velocity; }
|
| const FloatPoint3D& velocity() const { return m_velocity; }
|
|
|
| // Doppler factor
|
| - void setDopplerFactor(double dopplerFactor) { m_dopplerFactor = dopplerFactor; }
|
| + void setDopplerFactor(double);
|
| double dopplerFactor() const { return m_dopplerFactor; }
|
|
|
| // Speed of sound
|
| - void setSpeedOfSound(double speedOfSound) { m_speedOfSound = speedOfSound; }
|
| + void setSpeedOfSound(double);
|
| double speedOfSound() const { return m_speedOfSound; }
|
|
|
| + Mutex& listenerLock() { return m_listenerLock; }
|
| + void addPanner(PannerNode*);
|
| + void removePanner(PannerNode*);
|
| +
|
| private:
|
| AudioListener();
|
|
|
| - // Position / Orientation
|
| + void setPosition(const FloatPoint3D&);
|
| + void setOrientation(const FloatPoint3D&);
|
| + void setUpVector(const FloatPoint3D&);
|
| + void setVelocity(const FloatPoint3D&);
|
| +
|
| + void markPannersAsDirty(unsigned);
|
| +
|
| FloatPoint3D m_position;
|
| FloatPoint3D m_orientation;
|
| FloatPoint3D m_upVector;
|
| -
|
| FloatPoint3D m_velocity;
|
| -
|
| double m_dopplerFactor;
|
| double m_speedOfSound;
|
| +
|
| + // Synchronize a panner's process() with setting of the state of the listener.
|
| + mutable Mutex m_listenerLock;
|
| +
|
| + // List for pannerNodes in context.
|
| + Vector<PannerNode*> m_panners;
|
| };
|
|
|
| } // WebCore
|
|
|