aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/qmmp/soundcore.cpp10
-rw-r--r--src/qmmp/volumecontrol.cpp12
-rw-r--r--src/qmmp/volumecontrol_p.h4
3 files changed, 16 insertions, 10 deletions
diff --git a/src/qmmp/soundcore.cpp b/src/qmmp/soundcore.cpp
index 85837588a..072542755 100644
--- a/src/qmmp/soundcore.cpp
+++ b/src/qmmp/soundcore.cpp
@@ -152,8 +152,6 @@ void SoundCore::setEqSettings(const EqSettings &settings)
void SoundCore::setVolume(int L, int R)
{
setMuted(false);
- L = qBound(0, L, 100);
- R = qBound(0, R, 100);
m_volumeControl->setVolume(L, R);
}
@@ -170,12 +168,8 @@ void SoundCore::setMuted(bool mute)
void SoundCore::changeVolume(int delta)
{
- int left = leftVolume();
- int right = rightVolume();
- int volume = qMax(left, right);
- int balance = volume > 0 ? (right - left)*100/volume : 0;
- volume = delta > 0 ? qMin(100, volume + 5) : qMax(0, volume - 5);
- setVolume(volume-qMax(balance,0)*volume/100, volume+qMin(balance,0)*volume/100);
+ setMuted(false);
+ m_volumeControl->changeVolume(delta);
}
int SoundCore::leftVolume()
diff --git a/src/qmmp/volumecontrol.cpp b/src/qmmp/volumecontrol.cpp
index 197c14828..98c2a3da7 100644
--- a/src/qmmp/volumecontrol.cpp
+++ b/src/qmmp/volumecontrol.cpp
@@ -51,12 +51,20 @@ int VolumeControl::left()
void VolumeControl::setVolume(int left, int right)
{
VolumeSettings v;
- v.left = left;
- v.right = right;
+ v.left = qBound(0,left,100);
+ v.right = qBound(0,right,100);
m_volume->setVolume(v);
checkVolume();
}
+void VolumeControl::changeVolume(int delta)
+{
+ int volume = qMax(m_left, m_right);
+ int balance = volume > 0 ? (m_right - m_left)*100/volume : 0;
+ volume = delta > 0 ? qMin(100, volume + 5) : qMax(0, volume - 5);
+ setVolume(volume-qMax(balance,0)*volume/100, volume+qMin(balance,0)*volume/100);
+}
+
int VolumeControl::right()
{
return m_right;
diff --git a/src/qmmp/volumecontrol_p.h b/src/qmmp/volumecontrol_p.h
index 99f90c675..0c33f70d8 100644
--- a/src/qmmp/volumecontrol_p.h
+++ b/src/qmmp/volumecontrol_p.h
@@ -53,6 +53,10 @@ public:
*/
void setVolume(int left, int right);
/*!
+ * Changes volume by \b delta percent
+ */
+ void changeVolume(int delta);
+ /*!
* Returns left channel volume.
*/
int left();