output/Internal: add OpenSoftwareMixer()

Moved code from AudioOutputControl::InternalOpen2().
This commit is contained in:
Max Kellermann 2017-08-07 18:33:07 +02:00
parent 612def5c11
commit 4f7f577a57
3 changed files with 13 additions and 5 deletions

View File

@ -98,6 +98,13 @@ AudioOutput::CloseOutput(bool drain) noexcept
ao_plugin_close(*this);
}
void
AudioOutput::OpenSoftwareMixer() noexcept
{
if (mixer != nullptr && mixer->IsPlugin(software_mixer_plugin))
software_mixer_set_filter(*mixer, volume_filter.Get());
}
void
AudioOutput::CloseSoftwareMixer() noexcept
{

View File

@ -160,6 +160,11 @@ public:
*/
void CloseOutput(bool drain) noexcept;
/**
* Mutex must not be locked.
*/
void OpenSoftwareMixer() noexcept;
/**
* Mutex must not be locked.
*/

View File

@ -26,7 +26,6 @@
#include "notify.hxx"
#include "filter/plugins/ConvertFilterPlugin.hxx"
#include "mixer/MixerInternal.hxx"
#include "mixer/plugins/SoftwareMixerPlugin.hxx"
#include "thread/Util.hxx"
#include "thread/Slack.hxx"
#include "thread/Name.hxx"
@ -53,10 +52,7 @@ AudioOutputControl::InternalOpen2(const AudioFormat in_audio_format)
{
assert(in_audio_format.IsValid());
if (output->mixer != nullptr &&
output->mixer->IsPlugin(software_mixer_plugin))
software_mixer_set_filter(*output->mixer,
output->volume_filter.Get());
output->OpenSoftwareMixer();
const auto cf = in_audio_format.WithMask(output->config_audio_format);