cb854d7832
AudioCommon/WASAPI: Construct std::thread with invoke semantics instead of a lambda
2021-01-12 19:25:40 +01:00
11c5150c16
AudioCommon/WASAPI: Factorize device enumeration logic into a function to greatly reduce code duplication
2021-01-12 19:25:38 +01:00
c373890505
AudioCommon/WASAPI: Do volume adjustment only when really needed
...
This skips a potentially costly loop if volume is 100% or 0%,
as for former there is no need for volume adjustment,
while latter can be solved by specifying a AUDCLNT_BUFFERFLAGS_SILENT flag
2021-01-12 19:24:49 +01:00
991b3ba8c2
AudioCommon/WASAPI: Remove thread unsafe nullptr checks giving a false sense of safety
2021-01-12 19:24:49 +01:00
5dbbf36563
AudioCommon/WASAPI: Use std::string_view where applicable
2021-01-12 19:24:46 +01:00
7d59ad262f
AudioCommon/WASAPI: Use leaner memory model on m_running, no need for a full barrier
2021-01-12 19:21:54 +01:00
ee60be4501
AudioCommon/WASAPI: Simplify thread synchronization model by not detaching WASAPI handler thread
2021-01-12 19:21:54 +01:00
c5a372ab2a
AudioCommon/WASAPI: Use WRL/WIL whenever possible
...
This fixes numerous resource leaks, as not every return path cleaned every created resource
Now they are all managed automatically and "commited" to WASAPIStream class fields only
after it's certain they initialized properly
2021-01-12 19:21:22 +01:00
374629ef30
AudioCommon: Make HandleWinAPI handle all success return values properly, not just S_OK
2021-01-12 19:18:48 +01:00
22a79289d3
AudioCommon: Migrate logging over to fmt
...
printf specifiers, begone!
2020-10-21 13:32:28 -04:00
e67eb4693e
Fix implicit false-to-nullptr conversions
2019-08-15 17:49:57 +02:00
a196dfe50d
AudioCommon: Implement WASAPI
2018-05-26 13:08:10 +02:00