aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Output/oss4
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-02-19 18:09:00 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-02-19 18:09:00 +0000
commit75c4eaf61e17e1a132498929f783964de134c7be (patch)
tree6d56eb4607c6dc153ef69153cc1537d1a4ae1382 /src/plugins/Output/oss4
parentf4a87da830f5c2bd5b57fcc1e1e2de1b1b8eb120 (diff)
downloadqmmp-75c4eaf61e17e1a132498929f783964de134c7be.tar.gz
qmmp-75c4eaf61e17e1a132498929f783964de134c7be.tar.bz2
qmmp-75c4eaf61e17e1a132498929f783964de134c7be.zip
changed volume api
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@3266 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Output/oss4')
-rw-r--r--src/plugins/Output/oss4/outputoss4.cpp28
-rw-r--r--src/plugins/Output/oss4/outputoss4.h4
2 files changed, 13 insertions, 19 deletions
diff --git a/src/plugins/Output/oss4/outputoss4.cpp b/src/plugins/Output/oss4/outputoss4.cpp
index 7b20f317b..4c1775665 100644
--- a/src/plugins/Output/oss4/outputoss4.cpp
+++ b/src/plugins/Output/oss4/outputoss4.cpp
@@ -178,40 +178,34 @@ VolumeOSS4::~VolumeOSS4()
settings.setValue("OSS4/volume", m_volume);
}
-void VolumeOSS4::setVolume(int channel, int value)
+void VolumeOSS4::setVolume(const VolumeSettings &vol)
{
- int l = (channel == Volume::LEFT_CHANNEL) ? value : volume(Volume::LEFT_CHANNEL);
- int r = (channel == Volume::RIGHT_CHANNEL) ? value : volume(Volume::RIGHT_CHANNEL);
- m_volume = (r << 8) | l;
+ m_volume = (vol.right << 8) | vol.left;
if(OutputOSS4::instance() && OutputOSS4::instance()->fd() >= 0)
{
ioctl(OutputOSS4::instance()->fd(), SNDCTL_DSP_SETPLAYVOL, &m_volume);
}
}
-int VolumeOSS4::volume(int channel)
+VolumeSettings VolumeOSS4::volume() const
{
+ VolumeSettings vol;
if(OutputOSS4::instance() && OutputOSS4::instance()->fd() >= 0)
{
int v = 0;
if (ioctl(OutputOSS4::instance()->fd(), SNDCTL_DSP_GETPLAYVOL, &v) < 0)
v = 0;
m_volume = v;
- if(channel == Volume::LEFT_CHANNEL)
- return (v & 0x00FF);
- return (v & 0xFF00) >> 8;
- }
- else
- {
- if(channel == Volume::LEFT_CHANNEL)
- return (m_volume & 0x00FF);
- return (m_volume & 0xFF00) >> 8;
}
+ vol.left = m_volume & 0x00FF;
+ vol.right = (m_volume & 0xFF00) >> 8;
+ return vol;
}
void VolumeOSS4::restore()
{
- int v = m_volume;
- setVolume(Volume::LEFT_CHANNEL, (v & 0x00FF));
- setVolume(Volume::RIGHT_CHANNEL, (v & 0xFF00) >> 8);
+ if(OutputOSS4::instance() && OutputOSS4::instance()->fd() >= 0)
+ {
+ ioctl(OutputOSS4::instance()->fd(), SNDCTL_DSP_SETPLAYVOL, &m_volume);
+ }
}
diff --git a/src/plugins/Output/oss4/outputoss4.h b/src/plugins/Output/oss4/outputoss4.h
index ee8ccf6af..5266db71b 100644
--- a/src/plugins/Output/oss4/outputoss4.h
+++ b/src/plugins/Output/oss4/outputoss4.h
@@ -65,8 +65,8 @@ public:
VolumeOSS4();
~VolumeOSS4();
- void setVolume(int channel, int value);
- int volume(int channel);
+ void setVolume(const VolumeSettings &vol);
+ VolumeSettings volume() const;
void restore();
private: