diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/llaudio/llaudioengine.cpp | 2 | ||||
| -rw-r--r-- | indra/llaudio/llaudioengine.h | 2 | ||||
| -rw-r--r-- | indra/llaudio/llaudioengine_fmodstudio.cpp | 19 | ||||
| -rw-r--r-- | indra/llaudio/llaudioengine_fmodstudio.h | 2 | ||||
| -rw-r--r-- | indra/llaudio/llaudioengine_openal.cpp | 9 | ||||
| -rw-r--r-- | indra/llaudio/llaudioengine_openal.h | 4 | ||||
| -rw-r--r-- | indra/newview/llstartup.cpp | 2 | 
7 files changed, 29 insertions, 11 deletions
| diff --git a/indra/llaudio/llaudioengine.cpp b/indra/llaudio/llaudioengine.cpp index f49028aad5..1d447f32ae 100644 --- a/indra/llaudio/llaudioengine.cpp +++ b/indra/llaudio/llaudioengine.cpp @@ -111,7 +111,7 @@ void LLAudioEngine::setDefaults()  } -bool LLAudioEngine::init(const S32 num_channels, void* userdata) +bool LLAudioEngine::init(const S32 num_channels, void* userdata, const std::string &app_title)  {  	setDefaults(); diff --git a/indra/llaudio/llaudioengine.h b/indra/llaudio/llaudioengine.h index f1e1b4e308..97674f15f7 100644 --- a/indra/llaudio/llaudioengine.h +++ b/indra/llaudio/llaudioengine.h @@ -99,7 +99,7 @@ public:  	virtual ~LLAudioEngine();  	// initialization/startup/shutdown -	virtual bool init(const S32 num_channels, void *userdata); +	virtual bool init(const S32 num_channels, void *userdata, const std::string &app_title);  	virtual std::string getDriverName(bool verbose) = 0;  	virtual void shutdown(); diff --git a/indra/llaudio/llaudioengine_fmodstudio.cpp b/indra/llaudio/llaudioengine_fmodstudio.cpp index 32d2266fdb..06a5776eb1 100644 --- a/indra/llaudio/llaudioengine_fmodstudio.cpp +++ b/indra/llaudio/llaudioengine_fmodstudio.cpp @@ -74,7 +74,7 @@ static inline bool Check_FMOD_Error(FMOD_RESULT result, const char *string)      return true;  } -bool LLAudioEngine_FMODSTUDIO::init(const S32 num_channels, void* userdata) +bool LLAudioEngine_FMODSTUDIO::init(const S32 num_channels, void* userdata, const std::string &app_title)  {      U32 version;      FMOD_RESULT result; @@ -86,7 +86,7 @@ bool LLAudioEngine_FMODSTUDIO::init(const S32 num_channels, void* userdata)          return false;      //will call LLAudioEngine_FMODSTUDIO::allocateListener, which needs a valid mSystem pointer. -    LLAudioEngine::init(num_channels, userdata); +    LLAudioEngine::init(num_channels, userdata, app_title);      result = mSystem->getVersion(&version);      Check_FMOD_Error(result, "FMOD::System::getVersion"); @@ -97,6 +97,8 @@ bool LLAudioEngine_FMODSTUDIO::init(const S32 num_channels, void* userdata)              << " expected:" << FMOD_VERSION << LL_ENDL;      } +    // In case we need to force sampling on stereo, use setSoftwareFormat here +      // In this case, all sounds, PLUS wind and stream will be software.      result = mSystem->setSoftwareChannels(num_channels + 2);      Check_FMOD_Error(result, "FMOD::System::setSoftwareChannels"); @@ -109,6 +111,8 @@ bool LLAudioEngine_FMODSTUDIO::init(const S32 num_channels, void* userdata)      result = mSystem->setAdvancedSettings(&settings);      Check_FMOD_Error(result, "FMOD::System::setAdvancedSettings"); +    // FMOD_INIT_THREAD_UNSAFE Disables thread safety for API calls. +    // Only use this if FMOD is being called from a single thread, and if Studio API is not being used.      U32 fmod_flags = FMOD_INIT_NORMAL | FMOD_INIT_3D_RIGHTHANDED | FMOD_INIT_THREAD_UNSAFE;      if (mEnableProfiler)      { @@ -125,7 +129,7 @@ bool LLAudioEngine_FMODSTUDIO::init(const S32 num_channels, void* userdata)          {              LL_DEBUGS("AppInit") << "Trying PulseAudio audio output..." << LL_ENDL;              if (mSystem->setOutput(FMOD_OUTPUTTYPE_PULSEAUDIO) == FMOD_OK && -                (result = mSystem->init(num_channels + 2, fmod_flags, 0)) == FMOD_OK) +                (result = mSystem->init(num_channels + 2, fmod_flags, const_cast<char*>(app_title.c_str()))) == FMOD_OK)              {                  LL_DEBUGS("AppInit") << "PulseAudio output initialized OKAY" << LL_ENDL;                  audio_ok = true; @@ -238,7 +242,7 @@ std::string LLAudioEngine_FMODSTUDIO::getDriverName(bool verbose)              return llformat("FMOD Studio %1x.%02x.%02x", version >> 16, version >> 8 & 0x000000FF, version & 0x000000FF);          }      } -    return "FMODSTUDIO"; +    return "FMOD STUDIO";  } @@ -433,6 +437,13 @@ LLAudioChannelFMODSTUDIO::~LLAudioChannelFMODSTUDIO()  bool LLAudioChannelFMODSTUDIO::updateBuffer()  { +    if (!mCurrentSourcep) +    { +        // This channel isn't associated with any source, nothing +        // to be updated +        return false; +    } +      if (LLAudioChannel::updateBuffer())      {          // Base class update returned true, which means that we need to actually diff --git a/indra/llaudio/llaudioengine_fmodstudio.h b/indra/llaudio/llaudioengine_fmodstudio.h index 69276244da..f2361df1b6 100644 --- a/indra/llaudio/llaudioengine_fmodstudio.h +++ b/indra/llaudio/llaudioengine_fmodstudio.h @@ -51,7 +51,7 @@ public:  	virtual ~LLAudioEngine_FMODSTUDIO();  	// initialization/startup/shutdown -	virtual bool init(const S32 num_channels, void *user_data); +	virtual bool init(const S32 num_channels, void *user_data, const std::string &app_title);  	virtual std::string getDriverName(bool verbose);  	virtual void allocateListener(); diff --git a/indra/llaudio/llaudioengine_openal.cpp b/indra/llaudio/llaudioengine_openal.cpp index e6ac586618..a38d8291fa 100644 --- a/indra/llaudio/llaudioengine_openal.cpp +++ b/indra/llaudio/llaudioengine_openal.cpp @@ -52,7 +52,7 @@ LLAudioEngine_OpenAL::~LLAudioEngine_OpenAL()  }  // virtual -bool LLAudioEngine_OpenAL::init(const S32 num_channels, void* userdata) +bool LLAudioEngine_OpenAL::init(const S32 num_channels, void* userdata, const std::string &app_title)  {  	mWindGen = NULL;  	LLAudioEngine::init(num_channels, userdata); @@ -239,6 +239,13 @@ bool LLAudioChannelOpenAL::isPlaying()  bool LLAudioChannelOpenAL::updateBuffer()  { +    if (!mCurrentSourcep) +    { +        // This channel isn't associated with any source, nothing +        // to be updated +        return false; +    } +  	if (LLAudioChannel::updateBuffer())  	{  		// Base class update returned true, which means that we need to actually diff --git a/indra/llaudio/llaudioengine_openal.h b/indra/llaudio/llaudioengine_openal.h index 6639d9dfe6..366f9259e3 100644 --- a/indra/llaudio/llaudioengine_openal.h +++ b/indra/llaudio/llaudioengine_openal.h @@ -40,8 +40,8 @@ class LLAudioEngine_OpenAL : public LLAudioEngine  		LLAudioEngine_OpenAL();  		virtual ~LLAudioEngine_OpenAL(); -		virtual bool init(const S32 num_channels, void *user_data); -        	virtual std::string getDriverName(bool verbose); +        virtual bool init(const S32 num_channels, void *user_data, const std::string &app_title); +        virtual std::string getDriverName(bool verbose);  		virtual void allocateListener();  		virtual void shutdown(); diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index cb76ac6f74..56e8000400 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -650,7 +650,7 @@ bool idle_startup()  #else  				void* window_handle = NULL;  #endif -				bool init = gAudiop->init(kAUDIO_NUM_SOURCES, window_handle); +				bool init = gAudiop->init(kAUDIO_NUM_SOURCES, window_handle, LLAppViewer::instance()->getSecondLifeTitle());  				if(init)  				{  					gAudiop->setMuted(TRUE); | 
