Max Kellermann
b0596291a8
output/Thread: simplify the main loop switch
...
Move the InternalPlay() call and the wake_cond.wait() call into the
`case Command::NONE` and revert all `continue` statements to a simple
`break`.
2020-10-02 10:10:53 +02:00
Max Kellermann
c0775d328c
output/Filtered: move try/catch from IteratePause() to caller
2020-10-01 20:44:11 +02:00
Rosen Penev
ab9f5d2067
replace assert.h with cassert
...
The former was deprecated with C++14.
According to the C++11 and C++17 standards, both files are identical.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2020-03-12 15:25:38 -07:00
Max Kellermann
37f984ba74
output/Control: avoid sending KILL twice
2020-01-18 21:43:17 +01:00
Max Kellermann
2817bf9e95
copyright year 2020
2020-01-18 19:23:49 +01:00
Max Kellermann
e6600b8562
release v0.21.14
...
-----BEGIN PGP SIGNATURE-----
iQJEBAABCgAuFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAl1dBToQHG1heEBtdXNp
Y3BkLm9yZwAKCRAjbopYxttFEhlID/4gcrbaegKpTkftGPLBGlSUc4W0qwSHbdiJ
SuzK7sraSGUlLHHiBfqvFfE8tyEaLfsJarqiOdGgfiaW5QyapdwuU5s76nAN6jjY
onEo2QK6vSbv4J/B1+Jv+NGCgVM3ZkPy91GhfTz8MEtJMaBmztFhnpxK60r9jYPG
5EBsnVa6HhI7gniQAtOwE8SXYnn92Q4j72S8OuAbJ7Vwh0oqdIyXECqzcAE97Fk2
TNX/YSLST3I7Chv2OBDb3vOegh9nFUyr0qeSYdi8vk2BBYcgX2xYOOBQCC3ta/nr
NNeuSJOLgcF1XrFqVRRhDKZ8Y2inD6qVAXOH5WtChT1n3uXqYW7vdq0fW+/w3W/E
vouzgt5KvU5Me4Mk2M2dMjEWW+7Y8EUjvrwDnbDIkyP+Yi+BLTmTnyBgAW3cvRO9
UoCcWTBOEgyX2wAFl3r+NMPEneuMLbMCZUMju4/zveiRJdFExA0LC8wk0/iWqQbW
+WD8y6RTo7Z1jsP1vnBimgAkzkLAOuMlKLYNI15ETrxwKWgOjN6a7Q61GVdsaiqG
fKQeO0kZWWFcJ7HECgp3tpwWEi1+7/uqt0TwQgOKDdZHYL0Wb6Ur09KJS4b+eKIl
UzYwCrPgUx1pcYR+rTbMxCNpWn2kA+vp2UaPBN60c/J98d+6C/2nKtIvXfr5MrUA
CEb1epw/ew==
=mEFF
-----END PGP SIGNATURE-----
Merge tag 'v0.21.14'
release v0.21.14
2019-08-21 10:52:49 +02:00
Max Kellermann
b968e1b6de
output/Thread: add missing return
in exception handler
2019-08-21 10:20:17 +02:00
Max Kellermann
f3d16f6d1b
output/Thread: fix typo in comment
2019-08-13 13:08:40 +02:00
Max Kellermann
d663f81420
include cleanups (powered by iwyu)
2019-07-05 09:59:58 +02:00
Max Kellermann
a139279575
Copyright year 2019
2019-06-17 11:17:30 +02:00
Max Kellermann
620a39afb4
thread/Slack: use std::chrono::duration
2019-05-29 21:11:32 +02:00
Max Kellermann
9d1906da8a
{event,output}/Thread: downgrade realtime scheduling errors to "info"
...
These messages can be confusing, but they are not critical.
2019-05-23 14:24:27 +02:00
Max Kellermann
23d56cb6a1
output/Control: pass std::unique_lock<> to Cond::wait()
2019-04-26 18:28:44 +02:00
Max Kellermann
92022658f9
thread/Cond: add wait() overload which takes a unique_lock<>
...
Just like std::condition_variable, which however has no way to specify
the std::mutex directly.
2019-04-26 11:51:45 +02:00
Max Kellermann
b51bae5500
thread/*Cond: rename methods to match std::condition_variable
2019-04-25 19:46:43 +02:00
Max Kellermann
ce49d99c2f
check.h: remove obsolete header
...
Since we switched from autotools to Meson in commit
94592c1406
, we don't need to include
`config.h` early to properly enable large file support. Meson passes
the required macros on the compiler command line instead of defining
them in `config.h`.
This means we can include `config.h` at any time, whenever we want to
check its macros, and there are no ordering constraints.
2018-11-19 16:33:49 +01:00
Max Kellermann
228bf7eb09
output/thread: cancel the AudioOutputSource() instead of closing it
...
This fixes the assertion failure due to calling
AudioOutputSource::Close() twice.
2018-11-12 12:24:25 +01:00
Max Kellermann
5eaf2b8fc3
output/control: always close the AudioOutputSource
in RELEASE
...
Fixes a crash bug with `always_on` outputs which occurs because the
`AudioOutputSource` still has a pointer to an outdated `MusicChunk`.
Fixes #415
2018-11-12 12:21:59 +01:00
Max Kellermann
e097fef79e
output/control: add command RELEASE
...
With the new command, the decision to pause or close the output moves
into the output thread.
2018-11-12 12:09:37 +01:00
Max Kellermann
9a813cd3b1
output/Thread: update comment
2018-11-12 12:09:02 +01:00
Max Kellermann
f5c9071494
*: copyright year 2018
2018-10-31 17:54:59 +01:00
Max Kellermann
1624a5eb8d
output/Control: add another Cond attribute, replacing audio_output_client_notify
2018-06-23 19:11:48 +02:00
Max Kellermann
1bca29f9e2
output/Control: rename "cond" to "wake_cond"
...
Prepare for adding another Cond attribute.
2018-06-23 19:10:23 +02:00
Max Kellermann
eb771eaf0d
output/Thread: re-lock the mutex after flush error
...
Fixes deadlock due to mutex double lock.
2018-01-29 22:30:56 +01:00
Max Kellermann
e3ef3e8d71
output/Control: unlock mutex during expensive operations
2018-01-04 10:36:18 +01:00
Max Kellermann
051b8fbb31
output/Thread: add "noexcept"
2018-01-04 09:54:35 +01:00
Max Kellermann
6d0d8cf9cf
filter/Filter: add virtual method Flush()
...
This will be used by filters which have internal buffers which need to
be flushed at the end, e.g. the "soxr" resampler.
2018-01-02 23:15:51 +01:00
Max Kellermann
b0199245d5
output/Thread: move code to method InternalDrain()
2018-01-02 18:03:48 +01:00
Max Kellermann
b93e3b2cf6
output/Thread: move code to method InternalCloseError()
2018-01-02 18:02:14 +01:00
Max Kellermann
ae7fcf4c6b
output/Thread: move common code to method Failure()
2018-01-02 18:00:20 +01:00
Max Kellermann
1607754771
output/Thread: update "last_error" after filter/play errors
2018-01-02 17:59:37 +01:00
Max Kellermann
028f659c40
output/Thread: move error handling code into the catch block
2018-01-02 17:48:14 +01:00
Max Kellermann
8dfdacf128
output/Thread: AudioOutput::Play() must not return zero
2018-01-02 17:47:46 +01:00
Max Kellermann
e2621d5e44
filter/Plugin: return std::unique_ptr<PreparedFilter>
2017-12-27 11:39:01 +01:00
Max Kellermann
03cf6591c0
output/Source: convert prepared_filter to reference
2017-12-27 11:21:43 +01:00
Max Kellermann
914df18bf9
Main, ...: catch any exception, not just std::runtime_error
2017-12-19 10:56:23 +01:00
Max Kellermann
49784513b1
util/{Const,Writable}Buffer, ...: rename IsEmpty() to empty(), imitating STL
2017-11-10 19:24:33 +01:00
Max Kellermann
523051132d
Merge branch 'v0.20.x'
2017-11-05 17:48:41 +01:00
Max Kellermann
b3eb8489f3
output/Filtered: add a few OutputPlugin method wrappers
2017-08-08 14:27:19 +02:00
Max Kellermann
5431fca99b
output/Filtered: add attribute "log_name"
2017-08-08 14:02:58 +02:00
Max Kellermann
47c9d6ac64
output/Internal: rename source to Filtered.cxx
2017-08-07 21:50:13 +02:00
Max Kellermann
fc04620519
output/Internal: move code to ConfigureConvertFilter()
2017-08-07 18:42:10 +02:00
Max Kellermann
d4ee165253
output/Thread: move OpenSoftwareMixer() to the end
...
This call cannot fail, but needs cleanup if others fail. By moving it
to the end, we eliminate some cleanup.
2017-08-07 18:42:09 +02:00
Max Kellermann
4f7f577a57
output/Internal: add OpenSoftwareMixer()
...
Moved code from AudioOutputControl::InternalOpen2().
2017-08-07 18:33:07 +02:00
Max Kellermann
612def5c11
output/Internal: rename CloseFilter() to CloseSoftwareMixer()
2017-08-07 18:32:43 +02:00
Max Kellermann
27d68d8fdd
output/Internal: move the Mutex to struct AudioOutputControl
...
struct AudioOutput should not know or care about multi-threading.
2017-08-07 17:44:46 +02:00
Max Kellermann
546b773b21
output/Internal: remove mutex code from Close()
2017-08-07 17:43:58 +02:00
Max Kellermann
15dcaeda0f
output/Internal: remove mutex code from BeginPause(), IteratePause()
2017-08-07 17:40:40 +02:00
Max Kellermann
5990017d51
output/Internal: remove mutex code from Enable() and Disable()
2017-08-07 17:39:20 +02:00
Max Kellermann
3197c0fd7d
output/Thread: move code to InternalCloseOutput()
2017-08-07 17:35:43 +02:00