diff options
Diffstat (limited to 'src/plugins/Output')
| -rw-r--r-- | src/plugins/Output/alsa/outputalsa.cpp | 4 | ||||
| -rw-r--r-- | src/plugins/Output/alsa/outputalsa.h | 2 | ||||
| -rw-r--r-- | src/plugins/Output/pulseaudio/outputpulseaudio.cpp | 23 | ||||
| -rw-r--r-- | src/plugins/Output/pulseaudio/outputpulseaudio.h | 9 |
4 files changed, 28 insertions, 10 deletions
diff --git a/src/plugins/Output/alsa/outputalsa.cpp b/src/plugins/Output/alsa/outputalsa.cpp index 0f4dd5d37..8a383558d 100644 --- a/src/plugins/Output/alsa/outputalsa.cpp +++ b/src/plugins/Output/alsa/outputalsa.cpp @@ -558,7 +558,7 @@ int VolumeALSA::getMixer(snd_mixer_t **mixer, QString card) return (*mixer != NULL); } -bool VolumeALSA::hasNotifySignal() const +/*bool VolumeALSA::hasNotifySignal() const { return true; -} +}*/ diff --git a/src/plugins/Output/alsa/outputalsa.h b/src/plugins/Output/alsa/outputalsa.h index 91ac401b6..57d850b3f 100644 --- a/src/plugins/Output/alsa/outputalsa.h +++ b/src/plugins/Output/alsa/outputalsa.h @@ -77,7 +77,7 @@ public: void setVolume(const VolumeSettings &vol) override; VolumeSettings volume() const override; - bool hasNotifySignal() const override; + //bool hasNotifySignal() const override; private: //alsa mixer diff --git a/src/plugins/Output/pulseaudio/outputpulseaudio.cpp b/src/plugins/Output/pulseaudio/outputpulseaudio.cpp index 65fa0bff6..4017e5a87 100644 --- a/src/plugins/Output/pulseaudio/outputpulseaudio.cpp +++ b/src/plugins/Output/pulseaudio/outputpulseaudio.cpp @@ -163,6 +163,8 @@ bool OutputPulseAudio::initialize(quint32 freq, ChannelMap map, Qmmp::AudioForma return false; } success = false; + if(volumeControl) + setMuted(volumeControl->isMuted()); op = pa_context_get_sink_input_info(m_ctx, pa_stream_get_index(m_stream), OutputPulseAudio::info_cb, &success); if(!process(op) || !success) { @@ -313,7 +315,7 @@ void OutputPulseAudio::info_cb(pa_context *ctx, const pa_sink_input_info *info, return; if(volumeControl && pa_context_get_state(ctx) == PA_CONTEXT_READY) - volumeControl->updateVolume(info->volume); + volumeControl->updateVolume(info->volume, info->mute > 0); if(data) *(bool *) data = true; @@ -348,9 +350,10 @@ VolumePulseAudio::~VolumePulseAudio() OutputPulseAudio::volumeControl = nullptr; } -void VolumePulseAudio::updateVolume(const pa_cvolume &v) +void VolumePulseAudio::updateVolume(const pa_cvolume &v, bool muted) { m_volume = cvolumeToVolumeSettings(v); + m_muted = muted; emit changed(); } @@ -366,9 +369,21 @@ VolumeSettings VolumePulseAudio::volume() const return m_volume; } -bool VolumePulseAudio::hasNotifySignal() const +bool VolumePulseAudio::isMuted() const { - return true; + return m_muted; +} + +void VolumePulseAudio::setMuted(bool mute) +{ + if(OutputPulseAudio::instance) + OutputPulseAudio::instance->setMuted(mute); + m_muted = mute; +} + +Volume::VolumeFlags VolumePulseAudio::flags() const +{ + return Volume::IsMuteSupported | Volume::HasNotifySignal; } VolumeSettings VolumePulseAudio::cvolumeToVolumeSettings(const pa_cvolume &v) diff --git a/src/plugins/Output/pulseaudio/outputpulseaudio.h b/src/plugins/Output/pulseaudio/outputpulseaudio.h index ff320abf8..fca728bf1 100644 --- a/src/plugins/Output/pulseaudio/outputpulseaudio.h +++ b/src/plugins/Output/pulseaudio/outputpulseaudio.h @@ -48,7 +48,7 @@ public: void reset() override; void suspend() override; void resume() override; - void setMuted(bool mute) override; + void setMuted(bool mute); void setVolume(const VolumeSettings &v); static OutputPulseAudio *instance; @@ -81,15 +81,18 @@ public: VolumePulseAudio(); ~VolumePulseAudio(); - void updateVolume(const pa_cvolume &v); + void updateVolume(const pa_cvolume &v, bool muted); void setVolume(const VolumeSettings &vol) override; VolumeSettings volume() const override; - bool hasNotifySignal() const override; + bool isMuted() const override; + void setMuted(bool mute) override; + VolumeFlags flags() const override; static VolumeSettings cvolumeToVolumeSettings(const pa_cvolume &v); static pa_cvolume volumeSettingsToCvolume(const VolumeSettings &v, int channels); private: VolumeSettings m_volume; + bool m_muted = false; }; #endif // OUTPUTPULSEAUDIO_H |
