]> git.tdb.fi Git - libs/al.git/commitdiff
Make Listener a singleton instead of all-static
authorMikko Rasa <tdb@tdb.fi>
Sat, 17 Nov 2012 22:34:25 +0000 (00:34 +0200)
committerMikko Rasa <tdb@tdb.fi>
Sat, 17 Nov 2012 22:34:25 +0000 (00:34 +0200)
source/listener.cpp
source/listener.h

index cd43e4602d6b436b4ad39ee6200cf86f3a102ae2..74c50c9cc844a480d8195a3478af89a66688e6cf 100644 (file)
@@ -3,6 +3,12 @@
 namespace Msp {
 namespace AL {
 
+Listener &Listener::instance()
+{
+       static Listener listener;
+       return listener;
+}
+
 void Listener::attribute(ALenum attr, float v)
 {
        alListenerf(attr, v);
index 63f6ccf25e10fe9b50e195dd4536dc0db5f739ac..98e16388236c01e3e5a43138e465b8e0fe150b94 100644 (file)
@@ -7,19 +7,20 @@ namespace Msp {
 namespace AL {
 
 /**
-Represents the listener in the 3D environment.  There is only one listener in
-OpenAL - this class is not instantiable and all of its functions are static.
+Represents the listener in the 3D environment.  This class is a singleton.
 */
 class Listener
 {
 private:
-       Listener();
+       Listener() { }
 public:
-       static void attribute(ALenum, float);
-       static void attribute(ALenum, float, float, float);
-       static void attribute(ALenum, const float *);
-       static void set_position(float, float, float);
-       static void set_gain(float);
+       static Listener &instance();
+
+       void attribute(ALenum, float);
+       void attribute(ALenum, float, float, float);
+       void attribute(ALenum, const float *);
+       void set_position(float, float, float);
+       void set_gain(float);
 };
 
 } // namespace AL