aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Output
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/Output')
-rw-r--r--src/plugins/Output/alsa/outputalsa.cpp4
-rw-r--r--src/plugins/Output/alsa/outputalsa.h2
-rw-r--r--src/plugins/Output/pulseaudio/outputpulseaudio.cpp23
-rw-r--r--src/plugins/Output/pulseaudio/outputpulseaudio.h9
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