Chris Robinson
fbb4cbbe01
Keep TlsDestructors within threads.c
...
This basically makes the threads implementation self-contained in threads.c and
threads.h, except for the UIntMap/RWLock implementations.
2014-04-17 01:09:25 -07:00
Chris Robinson
e5d39a5f4c
Don't use DllMain to call altss destructors
2014-04-17 00:56:02 -07:00
Chris Robinson
c3b1c31d9b
Rename althread_key_ wrappers to altss_ and move it to threads.h/c
2014-04-17 00:11:12 -07:00
Chris Robinson
8cc3d05949
Fix some almtx_ return values
2014-04-16 08:21:45 -07:00
Chris Robinson
2149ccd985
Remove almtx_normal and almtx_errorcheck
2014-04-16 08:00:54 -07:00
Chris Robinson
c6dd479229
Make sure the duration given to althrd_sleep is valid
2014-04-16 07:52:43 -07:00
Chris Robinson
b020dd13fd
Avoid using a Sleep() wrapper
2014-04-16 06:59:44 -07:00
Chris Robinson
184cf30cf7
Use althrd_yield instead of alsched_yield
2014-04-16 06:18:24 -07:00
Chris Robinson
d124aee4d7
Remove the old thread wrappers for the new ones
2014-04-16 06:11:40 -07:00
Chris Robinson
505ef82246
Move the threads and mutex wrappers to threads.c
2014-04-16 05:40:40 -07:00
Chris Robinson
e8517d8600
Fix Windows' almtx_timedlock
2014-04-16 05:32:55 -07:00
Chris Robinson
18ab9cbbdd
Implement a C11-like thread wrapper and use it in mmdevapi and pulseaudio
2014-04-16 05:19:34 -07:00
Chris Robinson
29cb5058c0
Use a C11-like mutex wrapper instead of CRITICAL_SECTIONs
2014-04-16 01:39:11 -07:00
Chris Robinson
7bc08bb08c
Ensure VECTOR_ITER_BEGIN gives a pointer-to-type instead of an array-of-type
2014-04-14 00:58:45 -07:00
Chris Robinson
e0d24f9da4
Use a helper to detect a path slash on Windows
2014-04-13 21:44:13 -07:00
Chris Robinson
e615ea3cf9
Use VECTOR_INSERT to copy and append strings
2014-04-13 20:54:12 -07:00
Chris Robinson
219a0e6352
Add a GCC-specific VECTOR_INSERT
...
This version is capable of doing a compile-time type checks, to ensure the
objects being inserted are compatible with the vector data type. It should
otherwise be functionally identical.
2014-04-13 20:26:04 -07:00
Chris Robinson
0ef87227c1
Pass in the vector insertion point as a pointer
2014-04-13 18:42:41 -07:00
Chris Robinson
cce9609b9e
Avoid referencing the start iterator twice for vector insertion
2014-04-13 17:06:18 -07:00
Chris Robinson
90ae4b7c0f
Add a VECTOR_INSERT method to insert a range of elements at once
2014-04-09 22:50:28 -07:00
Chris Robinson
023981acb9
Fix a NULL deref when cloning a 0-sized vector
2014-04-09 20:14:45 -07:00
Chris Robinson
1290f37750
Silence an MSVC warning about -1u
2014-04-07 13:55:22 -07:00
Chris Robinson
add3013234
Fix the default XDG_DATA_DIRS paths
2014-04-07 13:24:51 -07:00
Chris Robinson
4f1104125b
Use an al_string vector for winmm device names
...
Also now gets wchar device names, to properly convert to UTF-8
2014-04-07 12:43:19 -07:00
Chris Robinson
c6821e5dd1
Use C11's static_assert when available
2014-04-07 11:48:28 -07:00
Chris Robinson
5e0fc84f49
Make HRTF stepping values per-channel
2014-04-05 10:24:13 -07:00
Chris Robinson
569374da2c
Properly compare al_strings
2014-04-03 13:46:09 -07:00
Chris Robinson
482fb37b68
Recognize NULL as an empty vector/string
2014-04-03 11:13:12 -07:00
Chris Robinson
570eb4e1a7
Don't pass the vector's capacity as a parameter to vector_reserve
2014-03-31 06:13:56 -07:00
Chris Robinson
48b472abb7
Use vectors for the dsound device lists
2014-03-31 02:48:01 -07:00
Chris Robinson
7b93e10f7a
Use an al_string for the device name
2014-03-28 22:11:34 -07:00
Chris Robinson
7570195b09
strlen returns size_t
2014-03-28 08:19:45 -07:00
Chris Robinson
d997be67fd
Use al_string to handle mmdevapi and dsound device names
2014-03-28 07:59:47 -07:00
Chris Robinson
af8fda8a4a
Add an al_string type and use it for the device lists
2014-03-28 05:44:19 -07:00
Chris Robinson
2ca673cca2
Properly handle special folder names with extended characters
2014-03-28 01:21:05 -07:00
Chris Robinson
20886059fd
Wrap fopen calls under Windows
...
The idea is that all filenames we deal with are encoded as UTF-8, but the
Windows functions that take a char string interpret it using the ANSI codepage.
So instead, we convert the UTF-8 string to a wchar string, and then use the
wchar functions for proper extended character filename support.
2014-03-28 00:37:42 -07:00
Chris Robinson
d11d061b2c
Don't have VECTOR_INIT "return" anything
2014-03-27 17:21:23 -07:00
Chris Robinson
4f3e71e5b7
Reactivate the mmdevapi audio client and set the event handle on reset
2014-03-27 17:17:35 -07:00
Chris Robinson
03fd2b8266
Remove setState from the MidiSynth vtable
2014-03-23 18:34:49 -07:00
Chris Robinson
cbb82647fb
Remove an unnecessary conditional
2014-03-23 17:44:26 -07:00
Chris Robinson
e2cb41dc61
Remove the last bits of the predictive sample processing
2014-03-23 17:33:57 -07:00
Chris Robinson
72986882f5
Remove the click removal buffers for auxiliary effect slots
2014-03-23 16:28:55 -07:00
Chris Robinson
a25260ea8a
Identity gain step is 1, not 0
2014-03-23 16:13:46 -07:00
Chris Robinson
f5e10b9945
Fix Neon gain step loops
2014-03-23 16:13:13 -07:00
Chris Robinson
52deb557d5
Add gain stepping to the send mixers
2014-03-23 16:11:21 -07:00
Chris Robinson
83038c0dab
Add some integer casts, and a range check
2014-03-23 15:22:37 -07:00
Chris Robinson
55f851093f
Remove the now-unneeded click removal buffers for the device
...
They are still there for auxiliary sends. However, they should go away soon
enough too, and then we won't have to mess around with calculating extra
"predictive" samples in the mixer.
2014-03-23 07:31:33 -07:00
Chris Robinson
92433532fe
Don't feed the HRTF mix to the click removal and pending click buffers
...
The coefficients (which control the volume and panning) already use stepping to
non-abruptly fade the mix.
2014-03-23 07:18:49 -07:00
Chris Robinson
81e049bd47
Step mixing gains per-sample for non-HRTF mixing
...
This fades the dry mixing gains using a logarithmic curve, which should produce
a smoother transition than a linear one. It functions similarly to a linear
fade except that
step = (target - current) / numsteps;
...
gain += step;
becomes
step = powf(target / current, 1.0f / numsteps);
...
gain *= step;
where 'target' and 'current' are clamped to a lower bound that is greater than
0 (which makes no sense on a logarithmic scale).
Consequently, the non-HRTF direct mixers do not do not feed into the click
removal and pending click buffers, as this per-sample fading would do an
adequate job of stopping clicks and pops caused by extreme gain changes. These
buffers should be removed shortly.
2014-03-23 06:57:00 -07:00
Chris Robinson
0ce0a88fd6
Move the step counter and moving flag to DirectParams
2014-03-23 03:03:03 -07:00