audio: AudioLoadRequest should take Filename or MovieAudio

This commit is contained in:
rdb 2026-01-26 11:08:56 +01:00
parent 051268de51
commit 1c8a5cfb48
3 changed files with 25 additions and 6 deletions

View File

@ -16,7 +16,7 @@
* to begin an asynchronous load.
*/
INLINE AudioLoadRequest::
AudioLoadRequest(AudioManager *audio_manager, const std::string &filename,
AudioLoadRequest(AudioManager *audio_manager, const Filename &filename,
bool positional) :
_audio_manager(audio_manager),
_filename(filename),
@ -24,6 +24,19 @@ AudioLoadRequest(AudioManager *audio_manager, const std::string &filename,
{
}
/**
* Create a new AudioLoadRequest, and add it to the loader via load_async(),
* to begin an asynchronous load.
*/
INLINE AudioLoadRequest::
AudioLoadRequest(AudioManager *audio_manager, MovieAudio *source,
bool positional) :
_audio_manager(audio_manager),
_source(source),
_positional(positional)
{
}
/**
* Returns the AudioManager that will serve this asynchronous
* AudioLoadRequest.
@ -36,7 +49,7 @@ get_audio_manager() const {
/**
* Returns the filename associated with this asynchronous AudioLoadRequest.
*/
INLINE const std::string &AudioLoadRequest::
INLINE const Filename &AudioLoadRequest::
get_filename() const {
return _filename;
}

View File

@ -21,7 +21,9 @@ TypeHandle AudioLoadRequest::_type_handle;
*/
AsyncTask::DoneStatus AudioLoadRequest::
do_task() {
set_result(_audio_manager->get_sound(_filename, _positional));
set_result(_source != nullptr
? _audio_manager->get_sound(_source, _positional)
: _audio_manager->get_sound(_filename, _positional));
// Don't continue the task; we're done.
return DS_done;

View File

@ -33,11 +33,14 @@ public:
PUBLISHED:
INLINE explicit AudioLoadRequest(AudioManager *audio_manager,
const std::string &filename,
const Filename &filename,
bool positional);
INLINE explicit AudioLoadRequest(AudioManager *audio_manager,
MovieAudio *source,
bool positional);
INLINE AudioManager *get_audio_manager() const;
INLINE const std::string &get_filename() const;
INLINE const Filename &get_filename() const;
INLINE bool get_positional() const;
INLINE bool is_ready() const;
@ -48,7 +51,8 @@ protected:
private:
PT(AudioManager) _audio_manager;
std::string _filename;
Filename _filename;
PT(MovieAudio) _source;
bool _positional;
public: