OgreAL revision 117 is available from SVN. Here is a summary of changes.
- Fixed macro tests so as to make OgreAL compile without errors on Ogre 1.6.x (Shoggoth)[/*]
- Buffer piggybacking has been repaired. Previously, on a number of configurations, when a sound was initially loaded either as an OGG or a WAV, and then a second sound instance that used the same buffer was created, a different constructor was called on the "piggy backing" sound (the one that is using an already loaded buffer), which did not correctly initialise the buffer pointers for its own instance. This has been fixed and both OGG and WAV now are able to use piggy-backed buffers.[/*]
- A bug with unloading has been fixed. This was the cause of some segmentation faults that occurred, possibly again due to piggy backing. When a buffer was freed at destruction of the last instance of a sound, it was freed in both the implementation specific sound instance (OGG, WAV) and the base class (Sound). I was able to load sounds, at one time, in such a way as to also cause a double-free due to deleted pointers not being nulled. Both of these issues are fixed and neither segmentation-faults not double-frees happen now regardless of instancing conditions.[/*]
- OpenAL-Soft-1.6.372 compatibility has been integrated. OpenAL-Soft is a real alternative for systems that wish to use the full OpenAL set of the 1.1 specification without a compliant sound card. It does, however, seem to have broken a small rule of the standard with regard to error reporting somewhere between 1.5.304 and 1.6.372. If a device fails to be opened, not only does alcOpenDevice() return a NULL, but the alError flag is set (this is not what the standard says should be done). None the less, it is easily possible to have OgreAL be compatible with OpenAL-Soft and standard OpenAL without deviating from standard compliance. This has been put in in the form of an extra error check.[/*]