Chris Robinson
4db24af59a
Avoid holding the context lock for the buffer functions
2011-09-11 02:37:52 -07:00
Chris Robinson
d85c12c385
Avoid holding the context lock when setting auxiliary slot properties
2011-09-11 02:01:31 -07:00
Chris Robinson
ccd8cbc2a9
Make some listener properties volatile
2011-09-11 01:26:09 -07:00
Chris Robinson
1075cce7b3
Mark some source properties volatile
2011-09-11 01:18:57 -07:00
Chris Robinson
89f438df71
Small fixes to setting the source's direct filter and auxiliary send
2011-09-11 00:58:33 -07:00
Chris Robinson
97027a7ad9
Avoid holding the context lock while setting source parameters
...
Note that some parameters still need the lock when getting or setting them.
2011-09-11 00:47:31 -07:00
Chris Robinson
3a8ef2f0d6
Initialize source parameters before adding the source to the map
2011-09-10 21:21:07 -07:00
Chris Robinson
4c8e6dead1
Don't defer stopped and initial source state changes
...
Typically when these are set, an app will be releasing the buffer from the
source, possibly to immediately reuse it. There would be an extra burden placed
on the app if it was required to process updates before it could fully release
the buffer from the source.
2011-09-10 21:02:50 -07:00
Chris Robinson
419294cddd
Avoid locking the device when adding and removing contexts
...
Also, don't keep track of the number of contexts per device
2011-09-10 07:18:29 -07:00
Chris Robinson
b9448a476e
Avoid holding the list lock when not needed
2011-09-10 05:19:08 -07:00
Chris Robinson
e8c9da0124
Add some reference counting to the device
2011-09-10 02:43:07 -07:00
Chris Robinson
18cf6e3210
Fix a parameter type
2011-09-10 02:13:52 -07:00
Chris Robinson
724ad0d893
Add an option to trap context errors in a debugger
2011-09-10 01:12:34 -07:00
Chris Robinson
9080d5fda0
Do an atomic compare-exchange on the global context when destroying a context
2011-09-02 02:57:21 -07:00
Chris Robinson
3a2fa18744
Log the function name instead of the source file and line number
2011-09-02 02:00:37 -07:00
Chris Robinson
e80aa008b2
Combine the reverb effects
...
Updating and processing still differs depending on whether standard or EAX
reverb is used or not. The only functional difference should be that the
allocated buffer (and subsequent offsets) take into account the modulation
and echo times.
2011-09-01 20:06:51 -07:00
Chris Robinson
812d91cbf8
Don't recreate the effect when switching between the dedicated effect types
2011-09-01 18:51:24 -07:00
Chris Robinson
942c8bf8a7
Combine the dedicated (dialog/LFE) effects
2011-09-01 18:01:14 -07:00
Chris Robinson
b6b3e2f1cc
Fix a comment
2011-08-31 14:01:15 -07:00
Chris Robinson
ee5ff943f3
Fix a potential infinite loop when removing an effect slot
2011-08-31 13:36:47 -07:00
Chris Robinson
b28f48c1bd
Store the filter gains directly in the source instead of duplicate filter objects
2011-08-31 02:18:16 -07:00
Chris Robinson
49e2fa428f
Avoid the context lock when generating and deleting effects and filters
2011-08-31 02:15:03 -07:00
Chris Robinson
2fcf97e207
Avoid the context lock when generating and deleting buffers
2011-08-31 01:13:02 -07:00
Chris Robinson
dd74757319
Add a function to initialize a RWLock
2011-08-31 01:00:19 -07:00
Chris Robinson
ab0b5d9890
Hold the context lock only as needed when handling the listener
2011-08-31 00:33:33 -07:00
Chris Robinson
23f576360c
Avoid locking the context while getting and setting global state
2011-08-31 00:19:27 -07:00
Chris Robinson
d7bd9c7559
Use the active effect slot list for pending updates in alDeferUpdatesSOFT
2011-08-30 23:33:01 -07:00
Chris Robinson
9fb91f70aa
Rename GetReffedContext to GetContextRef
2011-08-30 23:28:38 -07:00
Chris Robinson
a32a3bcda8
Use a more appropriate error for trying to delete an effect slot that's in use
2011-08-30 20:57:14 -07:00
Chris Robinson
16dc73ff48
Hold the lock only as needed when generating and deleting effect slots
2011-08-30 20:49:49 -07:00
Chris Robinson
0a1321aaae
Add a limit to the UIntMap size and use it for sources and effect slots
2011-08-30 20:33:47 -07:00
Chris Robinson
189add1d5a
Use a separate array for the auxiliary slots in the mixer
2011-08-30 20:13:42 -07:00
Chris Robinson
755062fb76
Fix compilation with MSVC
2011-08-30 17:55:52 -07:00
Chris Robinson
7d577832cd
Add functions to retrieve the source from the source map while removing it
2011-08-30 17:32:49 -07:00
Chris Robinson
c4866afbe0
Use a RWLock and atomic exchanges for thunk handling
2011-08-30 17:24:58 -07:00
Chris Robinson
ee60248d19
Lock the context while deleting sources only as needed
2011-08-30 00:33:01 -07:00
Chris Robinson
d546813c05
Don't lock the context while checking the validity of objects
2011-08-30 00:04:02 -07:00
Chris Robinson
f02d9e22d7
Do a pointer exchange when replacing the source buffer queue
2011-08-29 23:55:24 -07:00
Chris Robinson
cc67f45892
Use the reference counting functions for the buffer and auxiliary slot refs
2011-08-29 23:10:02 -07:00
Chris Robinson
c6a110ec59
Hold the context lock as needed while generating and deleting sources
2011-08-29 22:51:18 -07:00
Chris Robinson
7408396fd4
Use a generic int type to handle enum swaps
2011-08-29 21:30:12 -07:00
Chris Robinson
da081b81c4
Do a compare-exchange to set the context error
...
This allows for unlocked context access when getting the error
2011-08-29 20:52:13 -07:00
Chris Robinson
500ad776ea
Exchange the AL error when retrieving it
2011-08-29 20:34:47 -07:00
Chris Robinson
e4a2b69b37
Make specific functions to lock/unlock UIntMap access
2011-08-29 20:21:28 -07:00
Chris Robinson
8eaa9bb469
Manually lock the map while iterating through its contents
2011-08-29 20:05:50 -07:00
Chris Robinson
b283dd3682
Use a read-write lock to protect access to the UInt maps
2011-08-29 19:15:22 -07:00
Chris Robinson
4a5dd73a3c
Make the source's NeedsUpdate volatile
2011-08-29 13:43:59 -07:00
Chris Robinson
950570b8c3
Do a proper exchange when setting a new state
2011-08-29 13:29:37 -07:00
Chris Robinson
72beb577b6
Lock the context as needed for the defer and process calls
2011-08-29 13:22:07 -07:00
Chris Robinson
de65ee08c9
Make ALCcontext's DeferUpdates field volatile
2011-08-29 11:55:01 -07:00