mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-01 01:07:51 -04:00
I hope this works
This commit is contained in:
parent
fab7e6fde3
commit
b7f596a410
@ -270,17 +270,23 @@ AudioTraits::PlayerClass* LinuxSample::get_player(void) const {
|
||||
return LinuxSamplePlayer::get_instance();
|
||||
}
|
||||
|
||||
// REFCOUNT
|
||||
/*
|
||||
AudioTraits::DeleteSoundFunc* LinuxSample::get_destroy(void) const {
|
||||
return LinuxSample::destroy;
|
||||
}
|
||||
*/
|
||||
|
||||
AudioTraits::DeletePlayingFunc* LinuxSample::get_delstate(void) const {
|
||||
return LinuxSamplePlaying::destroy;
|
||||
}
|
||||
|
||||
// REFCOUNT
|
||||
/*
|
||||
void LinuxSample::destroy(AudioTraits::SoundClass* sound) {
|
||||
delete sound;
|
||||
}
|
||||
*/
|
||||
|
||||
LinuxSample* LinuxSample::load_raw(byte* data, unsigned long size) {
|
||||
LinuxSample* ret = new LinuxSample(data, size);
|
||||
@ -302,17 +308,23 @@ AudioTraits::PlayerClass* LinuxMusic::get_player(void) const {
|
||||
return LinuxMusicPlayer::get_instance();
|
||||
}
|
||||
|
||||
// REFCOUNT
|
||||
/*
|
||||
AudioTraits::DeleteSoundFunc* LinuxMusic::get_destroy(void) const {
|
||||
return LinuxMusic::destroy;
|
||||
}
|
||||
*/
|
||||
|
||||
AudioTraits::DeletePlayingFunc* LinuxMusic::get_delstate(void) const {
|
||||
return LinuxMusicPlaying::destroy;
|
||||
}
|
||||
|
||||
// REFCOUNT
|
||||
/*
|
||||
void LinuxMusic::destroy(AudioTraits::SoundClass* music) {
|
||||
delete music;
|
||||
}
|
||||
*/
|
||||
|
||||
LinuxSamplePlaying::~LinuxSamplePlaying(void) {
|
||||
}
|
||||
|
@ -70,9 +70,10 @@ public:
|
||||
virtual float length(void) const;
|
||||
virtual AudioTraits::PlayingClass* get_state(void) const;
|
||||
virtual AudioTraits::PlayerClass* get_player(void) const;
|
||||
virtual AudioTraits::DeleteSoundFunc* get_destroy(void) const;
|
||||
// REFCOUNT
|
||||
// virtual AudioTraits::DeleteSoundFunc* get_destroy(void) const;
|
||||
// static void destroy(AudioTraits::SoundClass*);
|
||||
virtual AudioTraits::DeletePlayingFunc* get_delstate(void) const;
|
||||
static void destroy(AudioTraits::SoundClass*);
|
||||
public:
|
||||
// used by the loader
|
||||
static LinuxSample* load_raw(byte*, unsigned long);
|
||||
@ -89,9 +90,10 @@ public:
|
||||
virtual float length(void) const;
|
||||
virtual AudioTraits::PlayingClass* get_state(void) const;
|
||||
virtual AudioTraits::PlayerClass* get_player(void) const;
|
||||
virtual AudioTraits::DeleteSoundFunc* get_destroy(void) const;
|
||||
// REFCOUNT
|
||||
// virtual AudioTraits::DeleteSoundFunc* get_destroy(void) const;
|
||||
// static void destroy(AudioTraits::SoundClass*);
|
||||
virtual AudioTraits::DeletePlayingFunc* get_delstate(void) const;
|
||||
static void destroy(AudioTraits::SoundClass*);
|
||||
};
|
||||
|
||||
class EXPCL_PANDA LinuxSamplePlaying : public AudioTraits::PlayingClass {
|
||||
|
@ -145,9 +145,12 @@ AudioTraits::PlayerClass* MikModSample::get_player(void) const {
|
||||
return MikModSamplePlayer::get_instance();
|
||||
}
|
||||
|
||||
// REFCOUNT
|
||||
/*
|
||||
AudioTraits::DeleteSoundFunc* MikModSample::get_destroy(void) const {
|
||||
return MikModSample::destroy;
|
||||
}
|
||||
*/
|
||||
|
||||
AudioTraits::DeletePlayingFunc* MikModSample::get_delstate(void) const {
|
||||
return MikModSamplePlaying::destroy;
|
||||
@ -164,9 +167,12 @@ MikModSample* MikModSample::load_wav(Filename filename) {
|
||||
return new MikModSample(sample);
|
||||
}
|
||||
|
||||
// REFCOUNT
|
||||
/*
|
||||
void MikModSample::destroy(AudioTraits::SoundClass* sample) {
|
||||
delete sample;
|
||||
}
|
||||
*/
|
||||
|
||||
SAMPLE* MikModSample::get_sample(void) {
|
||||
return _sample;
|
||||
@ -194,17 +200,23 @@ AudioTraits::PlayerClass* MikModMusic::get_player(void) const {
|
||||
return MikModFmsynthPlayer::get_instance();
|
||||
}
|
||||
|
||||
// REFCOUNT
|
||||
/*
|
||||
AudioTraits::DeleteSoundFunc* MikModMusic::get_destroy(void) const {
|
||||
return MikModMusic::destroy;
|
||||
}
|
||||
*/
|
||||
|
||||
AudioTraits::DeletePlayingFunc* MikModMusic::get_delstate(void) const {
|
||||
return MikModMusicPlaying::destroy;
|
||||
}
|
||||
|
||||
// REFCOUNT
|
||||
/*
|
||||
void MikModMusic::destroy(AudioTraits::SoundClass* music) {
|
||||
delete music;
|
||||
}
|
||||
*/
|
||||
|
||||
MikModMidi::MikModMidi(void) {
|
||||
}
|
||||
@ -229,17 +241,23 @@ AudioTraits::PlayerClass* MikModMidi::get_player(void) const {
|
||||
return MikModMidiPlayer::get_instance();
|
||||
}
|
||||
|
||||
// REFCOUNT
|
||||
/*
|
||||
AudioTraits::DeleteSoundFunc* MikModMidi::get_destroy(void) const {
|
||||
return MikModMidi::destroy;
|
||||
}
|
||||
*/
|
||||
|
||||
AudioTraits::DeletePlayingFunc* MikModMidi::get_delstate(void) const {
|
||||
return MikModMidiPlaying::destroy;
|
||||
}
|
||||
|
||||
// REFCOUNT
|
||||
/*
|
||||
void MikModMidi::destroy(AudioTraits::SoundClass* music) {
|
||||
delete music;
|
||||
}
|
||||
*/
|
||||
|
||||
MikModSamplePlaying::MikModSamplePlaying(AudioTraits::SoundClass* s)
|
||||
: AudioTraits::PlayingClass(s) {
|
||||
|
@ -27,12 +27,14 @@ public:
|
||||
virtual float length(void) const;
|
||||
virtual AudioTraits::PlayingClass* get_state(void) const;
|
||||
virtual AudioTraits::PlayerClass* get_player(void) const;
|
||||
virtual AudioTraits::DeleteSoundFunc* get_destroy(void) const;
|
||||
// REFCOUNT
|
||||
// virtual AudioTraits::DeleteSoundFunc* get_destroy(void) const;
|
||||
virtual AudioTraits::DeletePlayingFunc* get_delstate(void) const;
|
||||
public:
|
||||
// used by the readers
|
||||
static MikModSample* load_wav(Filename);
|
||||
static void destroy(AudioTraits::SoundClass*);
|
||||
// REFCOUNT
|
||||
// static void destroy(AudioTraits::SoundClass*);
|
||||
// used by the players
|
||||
virtual SAMPLE* get_sample(void);
|
||||
virtual int get_freq(void);
|
||||
@ -48,9 +50,10 @@ public:
|
||||
virtual float length(void) const;
|
||||
virtual AudioTraits::PlayingClass* get_state(void) const;
|
||||
virtual AudioTraits::PlayerClass* get_player(void) const;
|
||||
virtual AudioTraits::DeleteSoundFunc* get_destroy(void) const;
|
||||
// REFCOUNT
|
||||
// virtual AudioTraits::DeleteSoundFunc* get_destroy(void) const;
|
||||
// static void destroy(AudioTraits::SoundClass*);
|
||||
virtual AudioTraits::DeletePlayingFunc* get_delstate(void) const;
|
||||
static void destroy(AudioTraits::SoundClass*);
|
||||
};
|
||||
|
||||
class EXPCL_PANDA MikModMidi : public AudioTraits::SoundClass {
|
||||
@ -62,9 +65,10 @@ public:
|
||||
virtual float length(void) const;
|
||||
virtual AudioTraits::PlayingClass* get_state(void) const;
|
||||
virtual AudioTraits::PlayerClass* get_player(void) const;
|
||||
virtual AudioTraits::DeleteSoundFunc* get_destroy(void) const;
|
||||
// REFCOUNT
|
||||
// virtual AudioTraits::DeleteSoundFunc* get_destroy(void) const;
|
||||
// static void destroy(AudioTraits::SoundClass*);
|
||||
virtual AudioTraits::DeletePlayingFunc* get_delstate(void) const;
|
||||
static void destroy(AudioTraits::SoundClass*);
|
||||
public:
|
||||
// used by the readers
|
||||
static MikModMidi* load_midi(Filename);
|
||||
|
@ -41,17 +41,23 @@ AudioTraits::PlayerClass* NullSound::get_player(void) const {
|
||||
return new NullPlayer();
|
||||
}
|
||||
|
||||
// REFCOUNT
|
||||
/*
|
||||
AudioTraits::DeleteSoundFunc* NullSound::get_destroy(void) const {
|
||||
return NullSound::destroy;
|
||||
}
|
||||
*/
|
||||
|
||||
AudioTraits::DeletePlayingFunc* NullSound::get_delstate(void) const {
|
||||
return NullPlaying::destroy;
|
||||
}
|
||||
|
||||
// REFCOUNT
|
||||
/*
|
||||
void NullSound::destroy(AudioTraits::SoundClass* sound) {
|
||||
delete sound;
|
||||
}
|
||||
*/
|
||||
|
||||
NullPlaying::~NullPlaying(void) {
|
||||
}
|
||||
|
@ -21,9 +21,10 @@ public:
|
||||
virtual float length(void) const;
|
||||
virtual AudioTraits::PlayingClass* get_state(void) const;
|
||||
virtual AudioTraits::PlayerClass* get_player(void) const;
|
||||
virtual AudioTraits::DeleteSoundFunc* get_destroy(void) const;
|
||||
// REFCOUNT
|
||||
// virtual AudioTraits::DeleteSoundFunc* get_destroy(void) const;
|
||||
// static void destroy(AudioTraits::SoundClass*);
|
||||
virtual AudioTraits::DeletePlayingFunc* get_delstate(void) const;
|
||||
static void destroy(AudioTraits::SoundClass*);
|
||||
};
|
||||
|
||||
class EXPCL_PANDA NullPlaying : public AudioTraits::PlayingClass {
|
||||
|
@ -67,7 +67,7 @@ AudioSound* AudioPool::ns_load_sound(Filename filename) {
|
||||
si = _sounds.find(filename);
|
||||
if (si != _sounds.end()) {
|
||||
// this sound was previously loaded
|
||||
AudioTraits::SoundClass* sc = (*si).second;
|
||||
PT(AudioTraits::SoundClass) sc = (*si).second;
|
||||
if (audio_cat->is_debug())
|
||||
audio_cat->debug() << "sound is already loaded (0x" << (void*)sc
|
||||
<< ")" << endl;
|
||||
@ -91,7 +91,7 @@ AudioSound* AudioPool::ns_load_sound(Filename filename) {
|
||||
<< "'" << endl;
|
||||
return (AudioSound*)0L;
|
||||
}
|
||||
AudioTraits::SoundClass* sound = (*((*sli).second))(filename);
|
||||
PT(AudioTraits::SoundClass) sound = (*((*sli).second))(filename);
|
||||
if (sound == (AudioTraits::SoundClass*)0L) {
|
||||
audio_cat->error() << "could not load '" << filename << "'" << endl;
|
||||
return (AudioSound*)0L;
|
||||
@ -116,8 +116,10 @@ void AudioPool::ns_release_sound(AudioSound* sound) {
|
||||
SoundMap::iterator si;
|
||||
si = _sounds.find(filename);
|
||||
if (si != _sounds.end() && (*si).second == sound->get_sound()) {
|
||||
AudioTraits::SoundClass* sc = (*si).second;
|
||||
(*(sc->get_destroy()))(sc);
|
||||
// REFCOUNT
|
||||
// don't do this with refcounting
|
||||
// AudioTraits::SoundClass* sc = (*si).second;
|
||||
// (*(sc->get_destroy()))(sc);
|
||||
_sounds.erase(si);
|
||||
}
|
||||
}
|
||||
@ -129,8 +131,10 @@ void AudioPool::ns_release_sound(AudioSound* sound) {
|
||||
////////////////////////////////////////////////////////////////////
|
||||
void AudioPool::ns_release_all_sounds(void) {
|
||||
for (SoundMap::iterator i=_sounds.begin(); i!=_sounds.end(); ++i) {
|
||||
AudioTraits::SoundClass* sc = (*i).second;
|
||||
(*(sc->get_destroy()))(sc);
|
||||
// REFCOUNT
|
||||
// don't do this with refcounting
|
||||
// AudioTraits::SoundClass* sc = (*i).second;
|
||||
// (*(sc->get_destroy()))(sc);
|
||||
}
|
||||
_sounds.clear();
|
||||
}
|
||||
|
@ -26,7 +26,7 @@ private:
|
||||
static AudioPool* get_ptr(void);
|
||||
|
||||
static AudioPool *_global_ptr;
|
||||
typedef map<string, AudioTraits::SoundClass* > SoundMap;
|
||||
typedef map<string, PT(AudioTraits::SoundClass) > SoundMap;
|
||||
SoundMap _sounds;
|
||||
public:
|
||||
typedef AudioTraits::SoundClass* SoundLoadFunc(Filename);
|
||||
|
@ -10,8 +10,10 @@
|
||||
/*
|
||||
#include "typedReferenceCount.h"
|
||||
*/
|
||||
#include "typeHandle.h"
|
||||
#include "namable.h"
|
||||
#include <typeHandle.h>
|
||||
#include <namable.h>
|
||||
#include <pointerTo.h>
|
||||
|
||||
|
||||
class AudioPool;
|
||||
class AudioManager;
|
||||
@ -21,7 +23,7 @@ class EXPCL_PANDA AudioSound : public TypedReferenceCount, public Namable {
|
||||
*/
|
||||
class EXPCL_PANDA AudioSound : public TypedObject, public Namable {
|
||||
private:
|
||||
AudioTraits::SoundClass *_sound;
|
||||
PT(AudioTraits::SoundClass) _sound;
|
||||
AudioTraits::PlayingClass *_state;
|
||||
AudioTraits::PlayerClass *_player;
|
||||
AudioTraits::DeletePlayingFunc *_delstate;
|
||||
|
@ -24,11 +24,14 @@ AudioTraits::PlayerClass* AudioTraits::SoundClass::get_player(void) const {
|
||||
return (AudioTraits::PlayerClass*)0L;
|
||||
}
|
||||
|
||||
// REFCOUNT
|
||||
/*
|
||||
AudioTraits::DeleteSoundFunc*
|
||||
AudioTraits::SoundClass::get_destroy(void) const {
|
||||
audio_cat->error() << "In abstract SoundClass::get_destroy!" << endl;
|
||||
return (AudioTraits::DeleteSoundFunc*)0L;
|
||||
}
|
||||
*/
|
||||
|
||||
AudioTraits::DeletePlayingFunc*
|
||||
AudioTraits::SoundClass::get_delstate(void) const {
|
||||
|
@ -7,6 +7,7 @@
|
||||
#define __AUDIO_TRAIT_H__
|
||||
|
||||
#include <pandabase.h>
|
||||
#include <referenceCount.h>
|
||||
|
||||
class EXPCL_PANDA AudioTraits {
|
||||
public:
|
||||
@ -17,7 +18,7 @@ public:
|
||||
typedef void DeleteSoundFunc(SoundClass*);
|
||||
typedef void DeletePlayingFunc(PlayingClass*);
|
||||
|
||||
class EXPCL_PANDA SoundClass {
|
||||
class EXPCL_PANDA SoundClass : public ReferenceCount {
|
||||
public:
|
||||
SoundClass(void) {}
|
||||
virtual ~SoundClass(void);
|
||||
@ -25,7 +26,8 @@ public:
|
||||
virtual float length(void) const = 0;
|
||||
virtual PlayingClass* get_state(void) const = 0;
|
||||
virtual PlayerClass* get_player(void) const = 0;
|
||||
virtual DeleteSoundFunc* get_destroy(void) const = 0;
|
||||
// REFCOUNT
|
||||
// virtual DeleteSoundFunc* get_destroy(void) const = 0;
|
||||
virtual DeletePlayingFunc* get_delstate(void) const = 0;
|
||||
};
|
||||
class EXPCL_PANDA PlayingClass {
|
||||
|
@ -204,12 +204,15 @@ AudioTraits::PlayerClass* WinSample::get_player(void) const {
|
||||
return ret;
|
||||
}
|
||||
|
||||
// REFCOUNT
|
||||
/*
|
||||
AudioTraits::DeleteSoundFunc* WinSample::get_destroy(void) const {
|
||||
if (audio_cat->is_debug())
|
||||
audio_cat->debug() << "winsample get_destroy returning 0x"
|
||||
<< (void*)(WinSample::destroy) << endl;
|
||||
return WinSample::destroy;
|
||||
}
|
||||
*/
|
||||
|
||||
AudioTraits::DeletePlayingFunc* WinSample::get_delstate(void) const {
|
||||
if (audio_cat->is_debug())
|
||||
@ -418,12 +421,15 @@ WinSample* WinSample::load_raw(unsigned char* data, unsigned long size) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
// REFCOUNT
|
||||
/*
|
||||
void WinSample::destroy(AudioTraits::SoundClass* sample) {
|
||||
if (audio_cat->is_debug())
|
||||
audio_cat->debug() << "winsample destroy deleting 0x" << (void*)sample
|
||||
<< endl;
|
||||
delete sample;
|
||||
}
|
||||
*/
|
||||
|
||||
WinMusic::~WinMusic(void) {
|
||||
// AudioManager::stop(this);
|
||||
@ -554,12 +560,15 @@ AudioTraits::PlayerClass* WinMusic::get_player(void) const {
|
||||
return ret;
|
||||
}
|
||||
|
||||
// REFCOUNT
|
||||
/*
|
||||
AudioTraits::DeleteSoundFunc* WinMusic::get_destroy(void) const {
|
||||
if (audio_cat->is_debug())
|
||||
audio_cat->debug() << "winmusic get_destroy returning 0x"
|
||||
<< (void*)(WinMusic::destroy) << endl;
|
||||
return WinMusic::destroy;
|
||||
}
|
||||
*/
|
||||
|
||||
AudioTraits::DeletePlayingFunc* WinMusic::get_delstate(void) const {
|
||||
if (audio_cat->is_debug())
|
||||
@ -568,11 +577,14 @@ AudioTraits::DeletePlayingFunc* WinMusic::get_delstate(void) const {
|
||||
return WinMusicPlaying::destroy;
|
||||
}
|
||||
|
||||
// REFCOUNT
|
||||
/*
|
||||
void WinMusic::destroy(AudioTraits::SoundClass* music) {
|
||||
if (audio_cat->is_debug())
|
||||
audio_cat->debug() << "winmusic destroy got 0x" << (void*)music << endl;
|
||||
delete music;
|
||||
}
|
||||
*/
|
||||
|
||||
WinMusic* WinMusic::load_midi(Filename filename) {
|
||||
if (audio_cat->is_debug())
|
||||
|
@ -30,12 +30,14 @@ public:
|
||||
virtual float length(void) const;
|
||||
virtual AudioTraits::PlayingClass* get_state(void) const;
|
||||
virtual AudioTraits::PlayerClass* get_player(void) const;
|
||||
virtual AudioTraits::DeleteSoundFunc* get_destroy(void) const;
|
||||
// REFCOUNT
|
||||
// virtual AudioTraits::DeleteSoundFunc* get_destroy(void) const;
|
||||
virtual AudioTraits::DeletePlayingFunc* get_delstate(void) const;
|
||||
public:
|
||||
static WinSample* load_wav(Filename);
|
||||
static WinSample* load_raw(unsigned char*, unsigned long);
|
||||
static void destroy(AudioTraits::SoundClass*);
|
||||
// REFCOUNT
|
||||
// static void destroy(AudioTraits::SoundClass*);
|
||||
};
|
||||
|
||||
class EXPCL_PANDA WinMusic : public AudioTraits::SoundClass {
|
||||
@ -55,9 +57,10 @@ public:
|
||||
virtual float length(void) const;
|
||||
virtual AudioTraits::PlayingClass* get_state(void) const;
|
||||
virtual AudioTraits::PlayerClass* get_player(void) const;
|
||||
virtual AudioTraits::DeleteSoundFunc* get_destroy(void) const;
|
||||
// REFCOUNT
|
||||
// virtual AudioTraits::DeleteSoundFunc* get_destroy(void) const;
|
||||
// static void destroy(AudioTraits::SoundClass*);
|
||||
virtual AudioTraits::DeletePlayingFunc* get_delstate(void) const;
|
||||
static void destroy(AudioTraits::SoundClass*);
|
||||
// these are used by the loaders
|
||||
static WinMusic* load_midi(Filename);
|
||||
// these are used by the players
|
||||
|
Loading…
x
Reference in New Issue
Block a user