SGSoundSample constructor changes
- Add an explicit constructor SGSoundSample(const SGPath& file) that directly uses the specified path instead of going through ResourceManager::findPath(). - Reimplement the existing constructor as SGSoundSample(const std::string& file, const SGPath& dir), delegating to the new one. - The first argument of the delegating constructor is now a const std::string& instead of a const char*. Among others, this will allow a better implementation of FGSoundManager::playAudioSampleCommand(). More explanations can be found here: https://sourceforge.net/p/flightgear/mailman/message/37695786/
This commit is contained in:
@@ -79,14 +79,19 @@ std::string SGSoundSampleInfo::random_string()
|
|||||||
// SGSoundSample
|
// SGSoundSample
|
||||||
//
|
//
|
||||||
|
|
||||||
// constructor
|
// Constructor
|
||||||
SGSoundSample::SGSoundSample(const char *file, const SGPath& currentDir) :
|
SGSoundSample::SGSoundSample(const SGPath& file) :
|
||||||
_is_file(true)
|
_is_file(true)
|
||||||
{
|
{
|
||||||
SGPath p = simgear::ResourceManager::instance()->findPath(file, currentDir);
|
_refname = file.utf8Str();
|
||||||
_refname = p.utf8Str();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Delegating constructor that goes through the ResourceManager
|
||||||
|
SGSoundSample::SGSoundSample(const string& file, const SGPath& dir) :
|
||||||
|
SGSoundSample(
|
||||||
|
simgear::ResourceManager::instance()->findPath(file, dir))
|
||||||
|
{ }
|
||||||
|
|
||||||
// constructor
|
// constructor
|
||||||
SGSoundSample::SGSoundSample( std::unique_ptr<unsigned char, decltype(free)*>& data,
|
SGSoundSample::SGSoundSample( std::unique_ptr<unsigned char, decltype(free)*>& data,
|
||||||
int len, int freq, int format )
|
int len, int freq, int format )
|
||||||
|
|||||||
@@ -30,6 +30,8 @@
|
|||||||
#ifndef _SG_SAMPLE_HXX
|
#ifndef _SG_SAMPLE_HXX
|
||||||
#define _SG_SAMPLE_HXX 1
|
#define _SG_SAMPLE_HXX 1
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
#include <simgear/math/SGMath.hxx>
|
#include <simgear/math/SGMath.hxx>
|
||||||
#include <simgear/props/props.hxx>
|
#include <simgear/props/props.hxx>
|
||||||
#include "soundmgr.hxx"
|
#include "soundmgr.hxx"
|
||||||
@@ -259,11 +261,19 @@ public:
|
|||||||
virtual ~SGSoundSample () = default;
|
virtual ~SGSoundSample () = default;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor that uses the specified path as is
|
||||||
* @param file File name of sound
|
* @param file Path to sound file
|
||||||
Buffer data is freed by the sample group
|
Buffer data is freed by the sample group
|
||||||
*/
|
*/
|
||||||
SGSoundSample(const char *file, const SGPath& currentDir);
|
explicit SGSoundSample(const SGPath& file);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor that goes through ResourceManager::findPath()
|
||||||
|
* @param file File name of sound
|
||||||
|
@param dir “Context” argument for ResourceManager::findPath()
|
||||||
|
Buffer data is freed by the sample group
|
||||||
|
*/
|
||||||
|
SGSoundSample(const std::string& file, const SGPath& dir);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor.
|
||||||
|
|||||||
Reference in New Issue
Block a user