|
@@ -20,18 +20,59 @@
|
|
|
#include "config_audio.h"
|
|
#include "config_audio.h"
|
|
|
#include "audioManager.h"
|
|
#include "audioManager.h"
|
|
|
|
|
|
|
|
-#ifdef HAVE_SYS_SOUNDCARD_H
|
|
|
|
|
- #include "linuxAudioManager.h"
|
|
|
|
|
-#elif defined(HAVE_RAD_MSS)
|
|
|
|
|
- #include "milesAudioManager.h"
|
|
|
|
|
-#else
|
|
|
|
|
- #include "nullAudioManager.h"
|
|
|
|
|
-#endif
|
|
|
|
|
|
|
+#include "nullAudioManager.h"
|
|
|
|
|
+
|
|
|
|
|
+#include "load_dso.h"
|
|
|
|
|
+
|
|
|
|
|
+namespace {
|
|
|
|
|
+ AudioManager* create_NullAudioManger() {
|
|
|
|
|
+ audio_debug("create_NullAudioManger()");
|
|
|
|
|
+ return new NullAudioManager();
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+Create_AudioManager_proc* AudioManager::_create_AudioManager=create_NullAudioManger;
|
|
|
|
|
+
|
|
|
|
|
+void AudioManager::
|
|
|
|
|
+register_AudioManager_creator(Create_AudioManager_proc* proc) {
|
|
|
|
|
+ nassertv(_create_AudioManager==create_NullAudioManger);
|
|
|
|
|
+ _create_AudioManager=proc;
|
|
|
|
|
+}
|
|
|
|
|
|
|
|
|
|
|
|
|
// Factory method for getting a platform specific AudioManager:
|
|
// Factory method for getting a platform specific AudioManager:
|
|
|
-AudioManager* AudioManager::create_AudioManager() {
|
|
|
|
|
- return new NAME_MACRO_FOR_AUDIO_MANAGER();
|
|
|
|
|
|
|
+AudioManager* AudioManager::
|
|
|
|
|
+create_AudioManager() {
|
|
|
|
|
+ audio_debug("create_AudioManager()\n audio_library_name=\""
|
|
|
|
|
+ <<*audio_library_name<<"\"");
|
|
|
|
|
+ static lib_load;
|
|
|
|
|
+ if (!lib_load) {
|
|
|
|
|
+ lib_load=1;
|
|
|
|
|
+ if (!audio_library_name->empty() && *audio_library_name != "null") {
|
|
|
|
|
+ Filename dl_name = Filename::dso_filename("lib"+*audio_library_name+".so");
|
|
|
|
|
+ dl_name.to_os_specific();
|
|
|
|
|
+ audio_debug(" dl_name=\""<<dl_name<<"\"");
|
|
|
|
|
+ void* lib = load_dso(dl_name);
|
|
|
|
|
+ if (!lib) {
|
|
|
|
|
+ audio_error(" LoadLibrary() failed, will use NullAudioManager");
|
|
|
|
|
+ audio_error(" "<<load_dso_error());
|
|
|
|
|
+ nassertr(_create_AudioManager==create_NullAudioManger, 0);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ // ...the library will register itself with the AudioManager.
|
|
|
|
|
+ #if defined(WIN32) && !defined(NDEBUG) //[
|
|
|
|
|
+ const int bufLen=256;
|
|
|
|
|
+ char path[bufLen];
|
|
|
|
|
+ DWORD count = GetModuleFileName((HMODULE)lib, path, bufLen);
|
|
|
|
|
+ if (count) {
|
|
|
|
|
+ audio_debug(" GetModuleFileName() \""<<path<<"\"");
|
|
|
|
|
+ } else {
|
|
|
|
|
+ audio_debug(" GetModuleFileName() failed.");
|
|
|
|
|
+ }
|
|
|
|
|
+ #endif //]
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return (*_create_AudioManager)();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|