]> git.mxchange.org Git - simgear.git/commitdiff
keep a pointer to the OpenAL vendor and renderer for reference
authorehofman <ehofman>
Sat, 26 Dec 2009 10:07:37 +0000 (10:07 +0000)
committerTim Moore <timoore33@gmail.com>
Sun, 27 Dec 2009 08:24:24 +0000 (09:24 +0100)
simgear/sound/soundmgr_openal.cxx
simgear/sound/soundmgr_openal.hxx

index 05651b75964f706b1e2ce6bab031f4cdbd0dc54c..7b18d61f65a52bfe238632e50dcf12974bfc9496 100644 (file)
@@ -69,7 +69,9 @@ SGSoundMgr::SGSoundMgr() :
     _geod_pos(SGGeod::fromCart(SGVec3d::zeros())),
     _velocity(SGVec3d::zeros()),
     _orientation(SGQuatd::zeros()),
-    _bad_doppler(false)
+    _bad_doppler(false),
+    _renderer("unknown"),
+    _vendor("unknown")
 {
 #if defined(ALUT_API_MAJOR_VERSION) && ALUT_API_MAJOR_VERSION >= 1
     if (_alut_init == 0) {
@@ -158,10 +160,10 @@ void SGSoundMgr::init(const char *devname) {
         else break;
     }
 
-    string vendor = (const char *)alGetString(AL_VENDOR);
-    string renderer = (const char *)alGetString(AL_RENDERER);
-    if ( vendor != "OpenAL Community" ||
-         (renderer != "Software" && renderer != "OpenAL Sample Implementation")
+    _vendor = (const char *)alGetString(AL_VENDOR);
+    _renderer = (const char *)alGetString(AL_RENDERER);
+    if ( _vendor != "OpenAL Community" ||
+        (_renderer != "Software" && _renderer != "OpenAL Sample Implementation")
        )
     {
        _bad_doppler = true;
@@ -220,6 +222,9 @@ void SGSoundMgr::stop() {
         alcDestroyContext(_context);
         alcCloseDevice(_device);
         _context = NULL;
+
+        _renderer = "unknown";
+        _vendor = "unknown";
     }
 }
 
index 2aa78bc518c3b8c8f63d7a83d84f677884208d66..9b9e0a126fd52e8b979f763d4f8681d38bd19589 100644 (file)
@@ -289,6 +289,12 @@ public:
      */
     vector<const char*> get_available_devices();
 
+    /**
+     * Get the current OpenAL vendor or rendering backend.
+     */
+    const string& get_vendor() { return _vendor; }
+    const string& get_renderer() { return _renderer; }
+
 private:
     static int _alut_init;
 
@@ -321,6 +327,8 @@ private:
     vector<ALuint> _sources_in_use;
 
     bool _bad_doppler;
+    string _renderer;
+    string _vendor;
 
     bool testForALError(string s);
     bool testForALCError(string s);