Merge branch 'null-always-off' of https://github.com/nomis/MPD

This commit is contained in:
Max Kellermann
2023-05-25 10:42:08 +02:00
5 changed files with 25 additions and 1 deletions

View File

@@ -25,6 +25,7 @@ AudioOutputControl::AudioOutputControl(std::unique_ptr<FilteredAudioOutput> _out
thread(BIND_THIS_METHOD(Task)),
tags(block.GetBlockValue("tags", true)),
always_on(block.GetBlockValue("always_on", false)),
always_off(block.GetBlockValue("always_off", false)),
enabled(block.GetBlockValue("enabled", true))
{
}
@@ -36,7 +37,8 @@ AudioOutputControl::AudioOutputControl(AudioOutputControl &&src,
client(_client),
thread(BIND_THIS_METHOD(Task)),
tags(src.tags),
always_on(src.always_on)
always_on(src.always_on),
always_off(src.always_off)
{
}
@@ -176,6 +178,9 @@ AudioOutputControl::EnableAsync()
if (!output)
return;
if (always_off)
return;
if (!thread.IsDefined()) {
if (!output->SupportsEnableDisable()) {
/* don't bother to start the thread now if the

View File

@@ -143,6 +143,11 @@ class AudioOutputControl {
*/
const bool always_on;
/**
* Should this output never play anything, even when enabled?
*/
const bool always_off;
/**
* Has the user enabled this device?
*/
@@ -274,6 +279,10 @@ public:
return !output;
}
bool AlwaysOff() const noexcept {
return always_off;
}
/**
* Caller must lock the mutex.
*/

View File

@@ -215,6 +215,10 @@ MultipleOutputs::Open(const AudioFormat audio_format)
for (const auto &ao : outputs) {
const std::scoped_lock<Mutex> lock(ao->mutex);
/* can't play on this device even if it's enabled */
if (ao->AlwaysOff())
continue;
if (ao->IsEnabled())
enabled = true;