aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/qmmp/volumecontrol.cpp10
-rw-r--r--src/qmmp/volumecontrol.h1
2 files changed, 9 insertions, 2 deletions
diff --git a/src/qmmp/volumecontrol.cpp b/src/qmmp/volumecontrol.cpp
index 4de0dc8a6..70d0b7a70 100644
--- a/src/qmmp/volumecontrol.cpp
+++ b/src/qmmp/volumecontrol.cpp
@@ -31,6 +31,7 @@ VolumeControl::VolumeControl(QObject *parent)
{
m_left = 0;
m_right = 0;
+ m_prev_block = FALSE;
}
VolumeControl::~VolumeControl()
@@ -71,12 +72,15 @@ void VolumeControl::checkVolume()
r = (r > 100) ? 100 : r;
l = (l < 0) ? 0 : l;
r = (r < 0) ? 0 : r;
- if (m_left != l || m_right != r)
+ if (m_left != l || m_right != r) //volume has been changed
{
m_left = l;
m_right = r;
emit volumeChanged(m_left, m_right);
}
+ else if(m_prev_block && !signalsBlocked ()) //signals have been unblocked
+ emit volumeChanged(m_left, m_right);
+ m_prev_block = signalsBlocked ();
}
SoftwareVolume *SoftwareVolume::m_instance = 0;
@@ -87,9 +91,11 @@ SoftwareVolume::SoftwareVolume(QObject *parent)
QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
m_left = settings.value("Volume/left", 80).toInt();
m_right = settings.value("Volume/right", 80).toInt();
+ blockSignals(TRUE);
+ checkVolume();
+ blockSignals(FALSE);
QTimer::singleShot(125, this, SLOT(checkVolume()));
m_instance = this;
- //checkVolume();
}
SoftwareVolume::~SoftwareVolume()
diff --git a/src/qmmp/volumecontrol.h b/src/qmmp/volumecontrol.h
index 68e0536fc..c08833e4e 100644
--- a/src/qmmp/volumecontrol.h
+++ b/src/qmmp/volumecontrol.h
@@ -83,6 +83,7 @@ protected:
private:
int m_left, m_right;
+ bool m_prev_block;
};
/*! @brief The SoftwareVolume class provides access to the software volume control.