There is an edge case in setMasterGain during startup which prevents setInternalGain from being called if the master volume setting and mInternalGain both equal 0.
In llaudioengine.cpp setting mInternalGain to a very low but non-zero value fixes this issue.
Couldn't reproduce the crash, but made defensive fix. Added check for NULL into for loop that iterates through mPreloadMap in LLAudioSource::hasPendingPreloads(). Such check is already present in similar situation in LLAudioEngine::startNextTransfer().
As Aimee has found: "The data chunk of nexfire.wav has an incorrect length specified in its header which we blindly trust when reading
the file in check_for_invalid_wav_formats() in llvorbisencode.cpp. It causes an overflow of the file position pointer when reading the file which makes
it start over from the beginning, hanging it in an infinite loop."
- To avoid this situation in future, check for chunk size was added, and if it is declared bigger then it may be, function is interrupted and returns error.
Submitting a patch made by Aleric Inglewood (See VWR-14914).
This bug happens for a lot of people, although it might be needed to have a fast multi core machine.
I have seen it on 1.22.10 once, never used 1.23 sorry, and saw it often on snowglobe. I am sure
it also affects 1.23 but I'd have to test that.
The symptons are that on a viewer with normally a good, high FPS, sometimes it happens
that the FPS dramatically drops (as low as 0.3, but it can also be anything higher, as high
as 10, say).
This particular jira is about a problem where the main thread is slowed down by a mutex lock
in libopenal (most calls starting with 'al' in indra/llaudio/audioengine_openal.cpp and
one in indra/llaudio/listener_openal.cpp). You can see that this is the case by opening the
Frame Console (control-shift-2) and checking that the "audio" (and possibly misc) timings
are very large compared to the Render time.
Apply -Wno-write-strings compile flag to llaudioengine_fmod.cpp and llstreamingaudio_fmod.cpp on Darwin as it was on Linux (Amen).
Removed unnecessary check for GCC >= 4.2 when applying this flag, as CXX_VERSION_NUMBER it used is only being generated in 00-Common.cmake on Linux at the moment and 4.0 understands -Wno-write-strings anyway.
Review #109
This (fairly major) change adds new "items" to the media list for
Parcel Media and Parcel Audio. Since these items are special (before
the items were always MoaP impls), they had to be treated
special. Moreover, actions on all of "media" had to be centralized so
that they would have similar behavior.