new system

This commit is contained in:
Dave Schuyler 2001-07-10 23:48:22 +00:00
parent 2b35b1ffce
commit f09691b1ce
6 changed files with 73 additions and 124 deletions

View File

@ -10,36 +10,26 @@
#define TARGET audio
#define LOCAL_LIBS putil ipc gui
#define COMBINED_SOURCES $[TARGET]_composite1.cxx $[TARGET]_composite2.cxx
#define SOURCES \
audio_manager.I audio_manager.h \
audio_midi.h \
audio_pool.I audio_pool.h \
audio_trait.h \
config_audio.h \
audio_mikmod_traits.cxx audio_mikmod_traits.h \
audio_win_traits.I audio_win_traits.cxx audio_win_traits.h \
audio_null_traits.I audio_null_traits.h \
audio_linux_traits.I audio_linux_traits.cxx audio_linux_traits.h \
audio_sound.I audio_sound.h \
audio_gui_functor.h \
$[if $[USE_RAD_MSS], audio_rad_mss_traits.I audio_rad_mss_traits.cxx audio_rad_mss_traits.h,]
#define INCLUDED_SOURCES \
config_audio.cxx audio_gui_functor.cxx \
audio_trait.cxx audio_pool.cxx audio_midi.cxx audio_manager.cxx \
audio_null_traits.cxx audio_sound.cxx audio_midi.cxx
config_audio.cxx config_audio.h \
audioManager.I audioManager.cxx audioManager.h \
audioSound.cxx audioSound.h \
$[if $[HAVE_RAD_MSS], \
milesAudioManager.cxx milesAudioManager.h \
milesAudioSound.I milesAudioSound.cxx milesAudioSound.h \
,] \
audio_gui_functor.h audio_gui_functor.cxx
#define INSTALL_HEADERS \
audio.h audio_manager.h \
audio_pool.I audio_pool.h \
audio_trait.h audio_mikmod_traits.h \
audio_win_traits.I audio_win_traits.h \
audio_null_traits.I audio_null_traits.h \
audio_linux_traits.I audio_linux_traits.h \
config_audio.h audio_manager.I audio_sound.h audio_sound.I audio_gui_functor.h \
$[if $[USE_RAD_MSS], audio_rad_mss_traits.I audio_rad_mss_traits.h,]
config_audio.h \
audio.h \
audioManager.h audioManager.I \
audioSound.h \
$[if $[HAVE_RAD_MSS], \
milesAudioManager.h \
milesAudioSound.h milesAudioSound.I \
,] \
audio_gui_functor.h
#define IGATESCAN audio.h
#end lib_target

View File

@ -19,10 +19,8 @@
#ifndef __AUDIO_H__
#define __AUDIO_H__
#include "audio_trait.h"
#include "audio_sound.h"
#include "audio_manager.h"
#include "audio_pool.h"
#include "audioSound.h"
#include "audioManager.h"
#include "audio_gui_functor.h"
#endif /* __AUDIO_H__ */

View File

@ -28,11 +28,13 @@ AudioGuiFunctor::~AudioGuiFunctor() {
_prev.clear();
}
#include "audio_manager.h"
#include "audioManager.h"
void AudioGuiFunctor::doit(GuiBehavior* b) {
if (_sound != (AudioSound*)0L)
AudioManager::play(_sound);
if (_prev != (GuiBehavior::BehaviorFunctor*)0L)
if (_sound) {
_sound->play();
}
if (_prev) {
_prev->doit(b);
}
}

View File

@ -20,7 +20,7 @@
#define __AUDIO_GUI_FUNCTOR_H__
#include <guiBehavior.h>
#include "audio_sound.h"
#include "audioSound.h"
class EXPCL_PANDA AudioGuiFunctor : public GuiBehavior::BehaviorFunctor {
protected:

View File

@ -17,7 +17,7 @@
////////////////////////////////////////////////////////////////////
#include "config_audio.h"
#include "audio_sound.h"
#include "audioSound.h"
#include "audio_gui_functor.h"
#include <dconfig.h>
#include <filename.h>
@ -26,83 +26,45 @@
Configure(config_audio);
NotifyCategoryDef(audio, "");
int audio_sample_voices = config_audio.GetInt("audio-sample-voices", 8);
int audio_mix_freq = config_audio.GetInt("audio-mix-freq", 11025);
string* audio_mode_flags;
int audio_driver_select = config_audio.GetInt("audio-driver-select", 0);
string* audio_driver_params;
int audio_buffer_size = config_audio.GetInt("audio-buffer-size", 4096);
string* audio_device;
int audio_auto_update_delay = config_audio.GetInt("audio-auto-update-delay",
1000000);
bool audio_is_active = config_audio.GetBool("audio-is-active", true);
bool audio_sfx_active = config_audio.GetBool("audio-sfx-active", true);
bool audio_music_active = config_audio.GetBool("audio-music-active", true);
float audio_master_sfx_volume =
config_audio.GetFloat("audio-master-sfx-volume", 1.);
float audio_master_music_volume =
config_audio.GetFloat("audio-master-music-volume", 1.);
int audio_thread_priority;
bool audio_active
=config_audio.GetBool("audio-active", true);
float audio_volume
=config_audio.GetFloat("audio-volume", 1.0);
bool audio_software_midi
=config_audio.GetBool("audio-software-midi", false);
bool audio_play_midi
=config_audio.GetBool("audio-play-midi", true);
bool audio_play_wave
=config_audio.GetBool("audio-play-wave", true);
bool audio_play_mp3
=config_audio.GetBool("audio-play-mp3", true);
int audio_output_rate
=config_audio.GetInt("audio-output-rate", 22050);
int audio_output_bits
=config_audio.GetInt("audio-output-bits", 16);
int audio_output_channels
=config_audio.GetInt("audio-output-channels", 2);
string* audio_dls_file;
ConfigureFn(config_audio) {
AudioSound::init_type();
AudioGuiFunctor::init_type();
Config::ConfigTable::Symbol mode;
config_audio.GetAll("audio-mode-flag", mode);
Config::ConfigTable::Symbol::iterator i;
audio_mode_flags = new string;
for (i=mode.begin(); i!=mode.end(); ++i) {
if (!audio_mode_flags->empty()) {
*audio_mode_flags += " ";
}
*audio_mode_flags += (*i).Val();
}
Config::ConfigTable::Symbol parms;
config_audio.GetAll("audio-driver-param", parms);
audio_driver_params = new string;
for (i=parms.begin(); i!=parms.end(); ++i) {
if (!audio_driver_params->empty()) {
*audio_driver_params += " ";
}
*audio_driver_params += (*i).Val();
}
audio_device = new string(config_audio.GetString("audio-device",
"/dev/dsp"));
string stmp = config_audio.GetString("audio-thread-priority", "NORMAL");
for (string::iterator q=stmp.begin(); q!=stmp.end(); ++q) {
(*q) = toupper(*q);
}
if (stmp == "LOW") {
audio_thread_priority = 0;
} else if (stmp == "NORMAL") {
audio_thread_priority = 1;
} else if (stmp == "HIGH") {
audio_thread_priority = 2;
} else{
audio_thread_priority = -1;
}
audio_dls_file = new string(
config_audio.GetString("audio-dls-file", "GM.DLS")
);
}
void audio_load_loaders() {
static bool did_load = false;
if (did_load) {
return;
}
Config::ConfigTable::Symbol::iterator i;
Config::ConfigTable::Symbol loaders;
config_audio.GetAll("audio-loader", loaders);
for (i=loaders.begin(); i!=loaders.end(); ++i) {
Filename dlname = Filename::dso_filename("libaudio_load_" + (*i).Val() +
".so");
audio_info("loading '" << (*i).Val() << "' loader");
void* tmp = load_dso(dlname);
if (tmp == (void*)0L) {
audio_info("unable to load: " << load_dso_error());
}
}
did_load = true;
}

View File

@ -24,22 +24,19 @@
NotifyCategoryDecl(audio, EXPCL_PANDA, EXPTP_PANDA);
extern EXPCL_PANDA int audio_sample_voices;
extern EXPCL_PANDA int audio_mix_freq;
extern EXPCL_PANDA string* audio_mode_flags;
extern EXPCL_PANDA int audio_driver_select;
extern EXPCL_PANDA string* audio_driver_params;
extern EXPCL_PANDA int audio_buffer_size;
extern EXPCL_PANDA string* audio_device;
extern EXPCL_PANDA int audio_auto_update_delay;
extern EXPCL_PANDA bool audio_is_active;
extern EXPCL_PANDA bool audio_sfx_active;
extern EXPCL_PANDA bool audio_music_active;
extern EXPCL_PANDA float audio_master_sfx_volume;
extern EXPCL_PANDA float audio_master_music_volume;
extern EXPCL_PANDA int audio_thread_priority;
extern EXPCL_PANDA bool audio_active;
extern EXPCL_PANDA float audio_volume;
extern EXPCL_PANDA void audio_load_loaders();
extern EXPCL_PANDA bool audio_software_midi;
extern EXPCL_PANDA string* audio_dls_file;
extern EXPCL_PANDA bool audio_play_midi;
extern EXPCL_PANDA bool audio_play_wave;
extern EXPCL_PANDA bool audio_play_mp3;
extern EXPCL_PANDA int audio_output_rate;
extern EXPCL_PANDA int audio_output_bits;
extern EXPCL_PANDA int audio_output_channels;
#ifndef NDEBUG //[
// Non-release build: