Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Reorganize ALvoice members | Chris Robinson | 2017-02-15 | 1 | -3/+3 |
| | | | | | This places the Send[] array at the end of the struct, making it easier to handle dynamically. | ||||
* | Make ALsourceProps' Send array dynamically sized | Chris Robinson | 2017-02-14 | 1 | -15/+6 |
| | | | | | | ALsourceProps' Send[] array is placed at the end of the struct, and given an indeterminate size. Extra space is allocated at the end of each struct given the number of auxiliary sends set for the device. | ||||
* | Fix build with non-C11 atomics | Chris Robinson | 2017-02-13 | 1 | -2/+2 |
| | |||||
* | Make the source state atomic | Chris Robinson | 2017-02-13 | 1 | -26/+20 |
| | | | | | Since it's modified by the mixer when playback is ended, a plain struct member isn't safe. | ||||
* | Remove a couple context lock wrapper functions | Chris Robinson | 2017-02-07 | 1 | -17/+17 |
| | |||||
* | Avoid duplicating code using a macro | Chris Robinson | 2016-12-21 | 1 | -6/+1 |
| | |||||
* | Use separate macros for atomics that don't take a memory order | Chris Robinson | 2016-12-20 | 1 | -29/+32 |
| | |||||
* | Fix an infinite loop | Chris Robinson | 2016-11-23 | 1 | -0/+1 |
| | |||||
* | Only send source updates for sources that have updated | Chris Robinson | 2016-11-23 | 1 | -1/+10 |
| | |||||
* | Clean up finding a source's voice | Chris Robinson | 2016-11-22 | 1 | -26/+29 |
| | |||||
* | Improve seqlock behavior | Chris Robinson | 2016-11-21 | 1 | -24/+32 |
| | |||||
* | Stop using almemory_order_consume | Chris Robinson | 2016-11-17 | 1 | -1/+1 |
| | |||||
* | Remove the upper limit from AL_MIN_GAIN and AL_MAX_GAIN | Chris Robinson | 2016-08-29 | 1 | -2/+2 |
| | | | | As per the current AL_SOFT_gain_clamp_ex proposal. | ||||
* | Allow sources to play while alcSuspendContext is in effect | Chris Robinson | 2016-08-26 | 1 | -1/+1 |
| | | | | | | | | | | | | | | This appears to be how Creative's Windows drivers handle it, and is necessary for at least the Windows version of UT2k4 (otherwise it tries to play a source while suspended, checks and sees it's stopped, then kills it before it's given a chance to start playing). Consequently, the internal properties it gets mixed with are determined by what the source properties are at the time of the play call, and the listener properties at the time of the suspend call. This does not change alDeferUpdatesSOFT, which will still hold the play state change until alProcessUpdatesSOFT. | ||||
* | Make a function definition static | Chris Robinson | 2016-08-23 | 1 | -1/+1 |
| | |||||
* | Hold updates for both listener and source updates | Chris Robinson | 2016-08-23 | 1 | -11/+0 |
| | |||||
* | Don't pass the context's distance model as the source's | Chris Robinson | 2016-08-23 | 1 | -10/+7 |
| | |||||
* | Avoid checking DeferUpdates for each source state change | Chris Robinson | 2016-08-08 | 1 | -8/+24 |
| | |||||
* | Don't store the looping state in the voice | Chris Robinson | 2016-07-31 | 1 | -9/+20 |
| | | | | | Certain operations on the buffer queue depend on the loop state to behave properly, so it should not be deferred until the async voice update occurs. | ||||
* | Move the input channel array out of the DirectParams and SendParams | Chris Robinson | 2016-07-13 | 1 | -3/+3 |
| | |||||
* | Reorder some source fields | Chris Robinson | 2016-07-07 | 1 | -19/+22 |
| | |||||
* | Use separate arrays for UIntMap keys and values | Chris Robinson | 2016-07-04 | 1 | -2/+2 |
| | |||||
* | Ensure voices has been updated once before mixing them | Chris Robinson | 2016-06-16 | 1 | -1/+8 |
| | | | | | | | | Sometimes the mixer is temporarily prevented from applying updates, when multiple sources need to be updated simultaneously for example, but does not prevent mixing. If the mixer runs during that time and a voice was just started, it would've mixed the voice without any internal properties being set for it. | ||||
* | Make a function static | Chris Robinson | 2016-06-01 | 1 | -6/+7 |
| | |||||
* | Hold the effectslot map lock while handling it | Chris Robinson | 2016-05-29 | 1 | -0/+3 |
| | |||||
* | Avoid the mixer lock when getting the plain source offset | Chris Robinson | 2016-05-28 | 1 | -11/+15 |
| | | | | i.e. without the latency | ||||
* | Avoid an explicit mixer lock for getting the source offset and latency | Chris Robinson | 2016-05-28 | 1 | -27/+72 |
| | | | | | The only mixer locking involved is with the backend, as determined by it's ability to get the device clock and latency atomically. | ||||
* | Change the backend getLatency method to return the clock time too | Chris Robinson | 2016-05-28 | 1 | -3/+8 |
| | | | | | | This will also allow backends to better synchronize the tracked clock time with the device output latency, without necessarily needing to lock if the backend API can allow for it. | ||||
* | Remove a couple unneeded functions | Chris Robinson | 2016-05-25 | 1 | -4/+7 |
| | |||||
* | Avoid using realloc in a number of places | Chris Robinson | 2016-05-21 | 1 | -1/+3 |
| | |||||
* | Make the source position calues atomic | Chris Robinson | 2016-05-19 | 1 | -19/+20 |
| | |||||
* | Avoid redundantly storing distance model settings | Chris Robinson | 2016-05-17 | 1 | -6/+9 |
| | |||||
* | Don't store the source's update method with the voice | Chris Robinson | 2016-05-16 | 1 | -4/+0 |
| | |||||
* | Avoid separate updates to sources that should apply together | Chris Robinson | 2016-05-15 | 1 | -1/+12 |
| | |||||
* | Provide asynchronous property updates for sources | Chris Robinson | 2016-05-14 | 1 | -132/+320 |
| | | | | | | | | | | | | | | | | | | | | | | | | | This necessitates a change in how source updates are handled. Rather than just being able to update sources when a dependent object state is changed (e.g. a listener gain change), now all source updates must be proactively provided. Consequently, apps that do not utilize any deferring (AL_SOFT_defer_updates or alcSuspendContext/alcProcessContext) may utilize more CPU since it'll be filling out more update containers for the mixer thread to use. The upside is that there's less blocking between the app's calling thread and the mixer thread, particularly for vectors and other multi-value properties (filters and sends). Deferring behavior when used is also improved, since updates that shouldn't be applied yet are simply not provided. And when they are provided, the mixer doesn't have to ignore them, meaning the actual deferring of a context doesn't have to synchrnously force an update -- the process call will send any pending updates, which the mixer will apply even if another deferral occurs before the mixer runs, because it'll still be there waiting on the next mixer invocation. There is one slight bug introduced by this commit. When a listener change is made, or changes to multiple sources while updates are being deferred, it is possible for the mixer to run while the sources are prepping their updates, causing some of the source updates to be seen before the other. This will be fixed in short order. | ||||
* | Hold the effect and filter maps while handling effects and filters | Chris Robinson | 2016-05-12 | 1 | -1/+10 |
| | |||||
* | Hold the buffer map lock while handling the buffer | Chris Robinson | 2016-05-10 | 1 | -1/+11 |
| | |||||
* | Hold the source map lock while handling it | Chris Robinson | 2016-05-10 | 1 | -0/+68 |
| | |||||
* | Use the source's offset type to determine if there's an offset | Chris Robinson | 2016-05-09 | 1 | -6/+11 |
| | |||||
* | Remove unnecessary code for the now-unused write offset | Chris Robinson | 2016-04-25 | 1 | -53/+17 |
| | |||||
* | Add support for AL_EXT_SOURCE_RADIUS | Chris Robinson | 2016-04-25 | 1 | -6/+27 |
| | |||||
* | Drop support for AL_SOFT_buffer_samples and AL_SOFT_buffer_sub_data | Chris Robinson | 2016-04-24 | 1 | -49/+0 |
| | | | | | | Unfortunately they conflict with AL_EXT_SOURCE_RADIUS, as AL_SOURCE_RADIUS and AL_BYTE_RW_OFFSETS_SOFT share the same source property value. A replacement for AL_SOFT_buffer_samples will eventually be made. | ||||
* | Move the aligned malloc functions to the common lib | Chris Robinson | 2016-03-29 | 1 | -0/+1 |
| | |||||
* | Implement AL_EXT_STEREO_ANGLES support | Chris Robinson | 2016-03-25 | 1 | -0/+36 |
| | |||||
* | Calculate HRTF stepping params right before mixing | Chris Robinson | 2016-02-14 | 1 | -1/+0 |
| | | | | | This means we track the current params and the target params, rather than the target params and the stepping. This closer matches the non-HRTF mixers. | ||||
* | Calculate channel gain stepping just before mixing | Chris Robinson | 2016-02-14 | 1 | -7/+2 |
| | |||||
* | Make the source's buffer queue a singly-linked list | Chris Robinson | 2016-01-31 | 1 | -30/+27 |
| | |||||
* | Lock the source queue for writing when updating the playback offset | Chris Robinson | 2015-10-24 | 1 | -8/+8 |
| | |||||
* | Fix usage of modf | Chris Robinson | 2015-10-24 | 1 | -2/+2 |
| | |||||
* | Include the fractional part with the source sample/sec offset | Chris Robinson | 2015-10-16 | 1 | -17/+18 |
| |