|
8325df25
|
2018-05-24T07:30:24
|
|
Fixed bug 4169 - Crash due to audio session observer race condition
Jona
The following explains why this bug was happening:
This crash was caused because the audio session was being set as active [session setActive:YES error:&err] when the audio device was actually being CLOSED. Certain cases the audio session being set to active would fail and the method would return right away. Because of the way the error was handled we never removed the SDLInterruptionListener thus leaking it. Later when an interruption was received the THIS_ object would contain a pointer to an already released device causing the crash.
The fix:
When only one device remained open and it was being closed we needed to set the audio session as NOT active and completely ignore the returned error to successfully release the SDLInterruptionListener. I think the user assumed that the open_playback_devices and open_capture_devices would equal 0 when all of them where closed but the truth is that at the end of the closing process that the open devices count is decremented.
|
|
dc8b55e5
|
2018-04-16T02:11:09
|
|
coreaudio: Use the standard SDL audio thread instead of spinning a new one.
Fixes corner cases, like the audio callback not firing if the device is
disconnected, etc.
|
|
e3cc5b2c
|
2018-01-03T10:03:25
|
|
Updated copyright for 2018
|
|
fa156741
|
2017-10-13T01:15:29
|
|
coreaudio: changed device close procedure to prevent long hangs in some cases.
The audioqueue thread needs to keep running, and processing the CFRunLoop
until the AudioQueue is disposed of, otherwise CoreAudio will hang waiting for
final data to feed the device.
At least, I think this is how it all works. It definitely fixes the bug here!
Since AudioQueueDispose() calls AudioQueueStop() internally, there's no need
for our thread to handle this, either, which is good because the AudioQueue
would be disposed by this point. So now the AudioQueue is disposed first, and
then our thread is joined, and everything works out okay.
Just in case, we mark the device "paused" before setting everything in motion,
so any further callbacks from CoreAudio will write silence and not fire the
app's audio callback again.
Fixes Bugzilla #3868.
|
|
fe6b8f1c
|
2017-09-22T11:25:52
|
|
Fixed Mac OS X build
|
|
407e1693
|
2017-09-22T11:15:14
|
|
Fixed audio being silent on older iOS devices
Tested on an iPod running iOS 6.1
|
|
c08a7a74
|
2017-09-15T17:27:32
|
|
Added a hint SDL_HINT_AUDIO_CATEGORY to control the audio category,
determining whether the phone mute switch affects the audio
|
|
6844d92c
|
2017-05-24T13:28:13
|
|
coreaudio: we don't need to track number of allocated audio buffers anymore.
CoreAudio takes care of iterating through the buffers and freeing them now,
so we don't have to manage this ourselves.
|
|
fc4402e5
|
2017-05-24T13:25:31
|
|
coreaudio: Better handling of audio buffer queue management.
We don't fill buffers just to throw them away during shutdown now, we let the
AudioQueue free its own buffers during disposal (which fixes possible warnings
getting printed to stderr by CoreAudio), and we stop the queue after running
any queued audio during shutdown, which prevents dropping the end of the
audio playback if you opened the device with an enormous sample buffer.
Fixes Bugzilla #3555.
|
|
3fd35f6b
|
2017-05-24T01:28:03
|
|
coreaudio: looks like we need more like a 10ms buffer minimum, not 50ms.
|
|
793c788b
|
2017-05-24T00:12:22
|
|
coreaudio: dynamically allocate AudioQueueBuffers.
We need more than two buffers to flip between if they are small, or CoreAudio
won't make any sound; apparently it needs X milliseconds of audio queued when
it needs to play more or it drops any queued buffers. We are currently
guessing 50 milliseconds as a minimum, but there's probably a more proper
way to get the minimum time period from the system.
Fixes Bugzilla #3656.
|
|
c878b59b
|
2017-05-10T16:18:43
|
|
audio: fixed more "spec" references that should have been "callbackspec".
This should catch all the ones for audio targets that have provided their
own audio threads.
|
|
75fb07a6
|
2017-05-03T18:05:29
|
|
iOS: Only mark interrupted audio devices as non-interrupted if AudioQueueStart is successful.
|
|
71a4e8ed
|
2017-02-23T12:10:02
|
|
Stop CoreAudio from doing expensive audio rate conversion
|
|
45b774e3
|
2017-01-01T18:33:28
|
|
Updated copyright for 2017
|
|
8e88f081
|
2016-09-21T23:06:49
|
|
Mac: Fixed whitespace around function return type.
|
|
f0fca288
|
2016-09-18T19:22:09
|
|
Handle audio interruptions on iOS/tvOS. Fixes bugs 2569 and 2960.
|
|
4209a1fd
|
2016-09-15T19:59:57
|
|
CoreAudio iOS/tvOS: Use AVFoundation instead of AudioSession. Fixes audio on tvOS.
Note that linking with AVFoundation is now required if you don't disable SDL_audio compilation on iOS and tvOS.
|