Crash was happening on windows platforms only and was caused
by some specifics about how CRT works.
Basically, blender and all of the .dll are compiled with /MT
flag, which means blender.exe and all .dll are using separate
environments. This makes it impossible to pass file descriptors
from blender to other dll, because it becomes invalid in the dll.
And this is exactly what was happening: OIIO was trying to open
movie file with all known plugins and one of them was zlib. And
the way OIIO was using zlib API is opening the file using Boost
and passing a file descriptor to zlib. And since zlib was a
dynamic library this lead to general issues using this descriptor
in zlib code.
Solved by linking to zlib statically. This allows to safely pass
file descriptor to zlib API. Alternative would be to compile all
the stuff with /MD flag, but that's much bigger and less robust
way to fix the issue.
Tested on windows using msvc2008, scons plus cmake both 32 and 64
bit versions. Seems to be working fine.
Further tweaks for mingw and msvc2012 could be needed tho.
* Some code and comment cleanup
* Remove cmake equivalent variable comments
* Remove some non used parameters from config files and btools: WITH_BF_FMOD, BF_VERSION.
* Remove some commented non-used variables
Reverting to openal from creative because own builds doesn't deal with 3D sound.
Hopefully it wouldn't lead to crashes caused by ffmpeg+openal (for resolving which
libraries were updated to openal-soft).
- Reverted own changes made to _stat function BLI_exists
- Use __MINGW32__ instead of FREE_WINDOWS in BLI_exists
- Removed recently added lib dependencies for mingw
- Use _stat64i32 instead of _stat in BLI_exist
Needed for correct compilation by mingw, no sense for msvc
(_stat is equivalent to _stat64i32 in Visual C++ 2005, and later i suppose)
- Added library msvcr90 for mingw to solve linking error to _stat64i32