Merge branch 'null-always-off' of https://github.com/nomis/MPD
This commit is contained in:
@@ -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
|
||||
|
@@ -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.
|
||||
*/
|
||||
|
@@ -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;
|
||||
|
||||
|
Reference in New Issue
Block a user