This uses ALC_SOFT_pause_device extension which is available since
OpenAL-soft 1.16. We guarantee almost 100% availability of this extension
since we've been using OpenAL-soft in Android since beginning.
Fixes#1828
I don't necessarily like having to do these extra calls whenever threads are
spawned (and what happens to signals during the time signal delivery is
disabled?) but it seems to fully fix os.execute.
NOTE: Also disables signals when loading openal, as it or one of its backends
spawns threads internally, and does not disable signals itself.
--HG--
branch : minor
Move most logic back to Source. Pool now simply contains a list of playing
sources and a mutex. Also gets rid of the pause/pauseAtomic duplication in
Source, since it can now request a lock from Pool itself.
--HG--
branch : minor
Use Source:setFilter(type, params...) to set a filter.
Use Source:setFilter() to detach the current filter.
Use Source:getFilter() to get the currently set filter (or nil).
Squashed from pull request 27, and the clean-pr27 branch in love-experiments.
--HG--
branch : minor
getRecordingDevices internal function is now returns constant reference,
also re-enumerates devices every time it is called; this is a slow operation
getID removed for not being useful
--HG--
branch : minor-mic-input
made enumerator to first attempt aquire default device name by standard means,
then to fall back to read name from opened device
getRecordingDeviceCount removed for being redundant
--HG--
branch : minor-mic-input
RecordingDevice class added
(number)love.audio.getRecordingDeviceCount() and (table)love.audio.getRecordingDevices() exposed
(bool):startRecording([samples, sampleRate, bitDepth, channels], (SoundData):stopRecording([SoundData]),
(SoundData):getData([SoundData]), (number):getSampleCount(), (number):getSampleRate(), (number):getBitDepth(),
(number):getChannels(), (string):getName(), (number):getID(), (bool):isRecording() member functions exposed
previously existed stub implementation removed
getFormat moved to love::audio::openal::Audio
getFormat arguments order swapped to (bitDepth, channels)
getFormat now returns AL_NONE if format is invalid
--HG--
branch : minor-mic-input
Instead of having three states, stopped, paused and playing, now there's only
two states: paused and playing.
This means resume() is gone, as is isStopped(), and isPaused() has become
isPlaying(). stop() now pauses and rewinds, whereas pause() only pauses.
rewind() has been removed, and should either be replaced with stop() or
seek(0).
The same has been applied to the functions in the love.audio module, except they
get some extra magic:
- love.audio.pause() now returns a table/list of Source objects, which contains
only the sources it has just paused. This means you can then later restart
only them, instead of everything (as before).
- love.audio.play/pause/stop now have variants that take a list of Source
objects, and it starts or stops them all at the same time, this means calling
play(srcA, srcB) should mean srcA and srcB are much more (but possibly not
exactly) synchronised than they were with play(srcA); play(srcB).
--HG--
branch : minor