Set volume only if volume was explicitly set.
authorRobin Burchell <robin.burchell@jollamobile.com>
Tue, 22 Jul 2014 16:24:41 +0000 (18:24 +0200)
committerRobin Burchell <robin+qt@viroteck.net>
Mon, 4 Aug 2014 18:38:45 +0000 (20:38 +0200)
Change-Id: I0d5abab0ffbf61a74c59ce240fd39e756479026b
Done-with: Juho Hämäläinen <juho.hamalainen@tieto.com>
Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
src/multimedia/audio/qsoundeffect_pulse_p.cpp
src/multimedia/audio/qsoundeffect_pulse_p.h

index caea43d..766adaa 100644 (file)
@@ -57,7 +57,7 @@
 
 #include "qsoundeffect_pulse_p.h"
 
-#if defined(Q_WS_MAEMO_6)
+#if defined(Q_WS_MAEMO_6) || defined(NEMO_AUDIO)
 #include <pulse/ext-stream-restore.h>
 #endif
 
@@ -240,7 +240,7 @@ private:
             case PA_CONTEXT_SETTING_NAME:
                 break;
             case PA_CONTEXT_READY:
-    #if defined(Q_WS_MAEMO_6)
+    #if defined(Q_WS_MAEMO_6) || defined(NEMO_AUDIO)
                 pa_ext_stream_restore_read(c, &stream_restore_info_callback, self);
                 pa_ext_stream_restore_set_subscribe_cb(c, &stream_restore_monitor_callback, self);
                 pa_ext_stream_restore_subscribe(c, 1, 0, self);
@@ -255,7 +255,7 @@ private:
         }
     }
 
-#if defined(Q_WS_MAEMO_6)
+#if defined(Q_WS_MAEMO_6) || defined(NEMO_AUDIO)
 
     static void stream_restore_monitor_callback(pa_context *c, void *userdata)
     {
@@ -393,6 +393,9 @@ QSoundEffectPrivate::QSoundEffectPrivate(QObject* parent):
     m_sample(0),
     m_position(0),
     m_resourcesAvailable(false)
+#if defined(Q_WS_MAEMO_6) || defined(NEMO_AUDIO)
+    , m_customVolume(false)
+#endif
 {
     m_ref = new QSoundEffectRef(this);
     pa_sample_spec_init(&m_pulseSpec);
@@ -548,6 +551,9 @@ qreal QSoundEffectPrivate::volume() const
 
 void QSoundEffectPrivate::setVolume(qreal volume)
 {
+#if defined(Q_WS_MAEMO_6) || defined(NEMO_AUDIO)
+    m_customVolume = true;
+#endif
     m_volume = volume;
     emit volumeChanged();
     updateVolume();
@@ -557,6 +563,10 @@ void QSoundEffectPrivate::updateVolume()
 {
     if (m_sinkInputId < 0)
         return;
+#if defined(Q_WS_MAEMO_6) || defined(NEMO_AUDIO)
+    if (!m_customVolume)
+        return;
+#endif
     PulseDaemonLocker locker;
     pa_cvolume volume;
     volume.channels = m_pulseSpec.channels;
index a20f956..6c10eb9 100644 (file)
@@ -181,6 +181,10 @@ private:
     bool m_resourcesAvailable;
 
     QMediaPlayerResourceSetInterface *m_resources;
+
+#if defined(Q_WS_MAEMO_6) || defined(NEMO_AUDIO)
+    bool m_customVolume;
+#endif
 };
 
 QT_END_NAMESPACE