log ALmixer.c @ 72:398d1cb12448

age author description
Wed, 20 Jun 2012 10:32:41 -0700 Eric Wing Changed use of ANDROID_NDK to __ANDROID__ since it seems to be standard.
Tue, 19 Jun 2012 00:31:36 -0700 Eric Wing Attempt to fix GetTicks compile error on Windows (can't do math on a struct).
Wed, 18 Jan 2012 12:17:42 -0800 Eric Wing The evil Apple iOS 5.0 OpenAL regression bug strikes again. A user managed to encounter a case where the OpenAL buffer never unqueues and the workaround gets stuck in an infinite loop which results in the app getting killed by watch dog (crashing). I've added a timeout that will abort the unqueue attempt after 200 milliseconds. But if the buffers could be unqueued but the timeout we picked is too short, then we will regress back to the original problem. All iOS 5 audio users need to test this to make sure their apps don't break again. Please remember to file your Apple bug report if you haven't (bug:10145018), test with iOS 5.1 beta to check for new problems, and report results as necessary.
Fri, 21 Oct 2011 17:14:19 -0700 Eric Wing Workaround for terrible iOS 5.0 regression bug in Apple's OpenAL implementation with regards to resetting streaming sources. The fix uses a version check to determine if the workaround is employed. Once Apple fixes the problem, an upper bounds version check should be added.
Fri, 30 Sep 2011 17:48:23 -0700 Eric Wing Fixed bug with seeking channels with predecoded samples. The OpenAL 1.1 spec specifies that a playing source should automatically jump when already playing. The code was unnecessarily recalling alPlaySource again which is not necessarily the correct thing to do. I think the previous code is another remnant of the Open 1.0 era. Also fixed bugs in the return codes for seek and rewind. For single channels, the return code was 0 channels processed in ALmixer which resulted in returning false to Lua. The implementation now should return 1/true for single channels, but 0/false for no channels. Errors will return -1/false.
Fri, 30 Sep 2011 16:44:08 -0700 Eric Wing Workaround: There is a terrible OpenAL regression bug in iOS 5 dealing with streaming sources. alSourcei(source_id, AL_BUFFER, AL_NONE); fails to clear queued buffer queues on a streaming source. The workaround involves manually dequeuing the individual buffers before calling alSourcei(source_id, AL_BUFFER, AL_NONE);. But there is an additional race condition bug where the unqueue fails to take, so the included workaround keeps looping until the buffers finally report as cleared.
Thu, 29 Sep 2011 11:33:34 -0700 Eric Wing Added addition query to get the current number of buffers processed in the new inner buffer decoupling loop because I've been seeing a lot of 59TestingError warnings. I think it is possible the value may become stale after the first iteration of the loop resulting in assumption failures which result in triggering this error.
Tue, 13 Sep 2011 18:03:21 -0700 Eric Wing Split off background thread (threads only) termination and creation into separate functions from Interruption handling to make it easier to avoid race condition bug with Apple rdar://10081775 w.r.t. setting the OpenAL context. New APIs to suspend and resume update threads. Interruption handling calls these automatically.
Tue, 30 Aug 2011 19:42:31 -0700 Eric Wing Warning: Breaking API/ABI changes. New optimizations to decouple update loop from number of buffers queued in audio streaming to allow more for more and smaller buffers to be processed in a loop. This also has the benefit for access_data callback buffer sizes not to be dictated by the performance tuning.
Fri, 19 Aug 2011 12:36:50 -0700 Eric Wing Resync to get interruption changes.
Mon, 11 Apr 2011 17:19:24 -0700 Eric Wing Fixed memory leak in Quit due to changes related to background thread removal. FreeData was quick escaping because it checked for ALmixer_Initialized which is now false by the time the code is reached.
Thu, 07 Apr 2011 19:19:07 -0700 Eric Wing Moved two variable declarations to the top to make old C89/90 compilers happy.
Wed, 06 Apr 2011 14:54:09 -0700 Eric Wing Bug fix for starvation problem due to for-loop using uninitialized variable.
Mon, 04 Apr 2011 15:57:22 -0700 Eric Wing Fixed for omitted return value.
Fri, 01 Apr 2011 17:39:32 -0700 Eric Wing Fixed infinite loop bug for delete.
Tue, 29 Mar 2011 15:55:02 -0700 Eric Wing Bug fix: Boolean should have been flipped...causes deadlock.
Tue, 29 Mar 2011 11:16:39 -0700 Eric Wing Added initialized check in Begin/End interruption.
Mon, 28 Mar 2011 18:28:14 -0700 Eric Wing Bug fix to move g_inInterruption cleanup outside of #ifdef THREADS block.
Mon, 28 Mar 2011 16:05:25 -0700 Eric Wing Optimization to destroy bookkeeping thread on BeginInterruption() and recreate it on EndInterruption(). I'm concerned that Android may be running this thread and eating up unnecessary sleep cycles, particularly on certain devices that may have pathological sleep disorders. (There is a report about Samsung Galaxy Tab.)
Mon, 28 Mar 2011 15:16:26 -0700 Eric Wing Initial backend changes to decouple assumption of 1 buffer queued per channel / per pass. API will eventually be changed/broken to support this.
Fri, 04 Mar 2011 11:29:05 -0800 Eric Wing Added initialization checks to all API functions.
Fri, 24 Dec 2010 13:58:04 -0800 Eric Wing Put LowerThreadPriority in ENABLE_ALMIXER_THREADS_BLOCK
Fri, 24 Dec 2010 03:33:31 -0800 Eric Wing merged
Fri, 24 Dec 2010 03:32:02 -0800 Eric Wing iOS optimization/bug/workaround.
Fri, 24 Dec 2010 03:23:02 -0800 Eric Wing - Added Seek APIs
Mon, 08 Nov 2010 22:19:47 -0800 Eric Wing Added SeekChannel, SeekSource.
Sat, 06 Nov 2010 03:59:28 -0700 Eric Wing Fixed bug in LinkedList delete. Shouldn't have both popped list and then called FreeData which would check the list again for the data. Instead, I should just get the data and then call FreeData to let it manipulate the list.
Sat, 06 Nov 2010 00:37:29 -0700 Eric Wing Added LinkedList class to project.
Fri, 05 Nov 2010 20:59:13 -0700 Eric Wing Bug fixes to FadeIn.
Sun, 31 Oct 2010 05:49:44 -0700 Eric Wing Bug fix: Moved Invoke_Callback before CleanChannel because I was trying to get the ALmixer_Data pointer, but it was cleared: