Commit Graph

14 Commits

Author SHA1 Message Date
mitchmindtree ca2aceb536 Fix state transition synchronisation in ASIO
This makes some tweaks to the ASIO backend in order to fix some cases
where races may have occured. This should allow us to remove the `Sync`
bound on the `Device` and `Host` types.
2020-01-12 22:40:05 +01:00
mitchmindtree 39ade49347 RAII cleanup wthin the ASIO backend
- Shares the `Device`'s `driver` and `asio_streams` `Arc`s with the
`Stream`s to ensure they remain valid if the `Host` or `Device` are
dropped early.
- Ensures that a stream's callback is removed upon `Drop`.
2019-12-31 15:46:10 +01:00
mitchmindtree 714dab7270 Refactor asio message to use a match expr. Fix some typos. 2019-07-05 13:19:42 +02:00
mitchmindtree b7d40d2993 Handle timed buffer switch and messaging callbacks in asio-sys
This adds an implementation of ASIO message handling in a manner that
matches that demonstrated in the SDK's `hostsample.cpp` file.

Also refactors the code to ensure that both `buffer_switch` and
`buffer_switch_time_info` callbacks are handled.
2019-07-05 05:51:32 +10:00
mitchmindtree cc5b0555c2 Refactor of asio-sys while reviewing for code correctness
Most of this is an attempt at improving readability and modularity of
the asio-sys crate while attempting to review it for correctness. Still
unsure why glitching is occasionally occuring on output, but recorded
input sounds perfectly clean.
2019-07-05 05:51:31 +10:00
mitchmindtree 91c5aa86b3 Fix Driver destructor behaviour in asio-sys 2019-07-05 05:51:31 +10:00
mitchmindtree c432f2b18d Update asio-sys to allow for having multiple handles to the same driver
ASIO has a limitation where it only supports loading a single audio
driver at a time. This fixes a common error where CPAL users would
request both the default input device and output device in separate
`load_driver` calls. Now, `load_driver` will return another handle to
the existing driver if the existing driver has the same name.
2019-07-05 05:51:31 +10:00
mitchmindtree 86e3366063 Remove unnecessary num crate from asio-sys 2019-07-05 05:51:30 +10:00
mitchmindtree 191b90909a Make Driver type responsible for managing user callbacks 2019-07-05 05:51:30 +10:00
mitchmindtree b6181d4362 Add impl Send for AsioStream 2019-07-05 05:51:29 +10:00
mitchmindtree efe683133c Refactor asio-sys to use less global state and more RAII
The asio-sys examples have been tested and still work nicely. The CPAL
asio host has not yet been updated for these changes.
2019-07-05 05:51:29 +10:00
Tom Gowan ab3b76ad75 fixes, remove transmute 2019-07-05 05:51:26 +10:00
Tom Gowan 7950045240 minor fixes 2019-07-05 05:51:26 +10:00
Tom Gowan 616974353b opt in and bug fix 2019-07-05 05:51:26 +10:00