diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2013-02-19 18:09:00 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2013-02-19 18:09:00 +0000 |
| commit | 75c4eaf61e17e1a132498929f783964de134c7be (patch) | |
| tree | 6d56eb4607c6dc153ef69153cc1537d1a4ae1382 /src/plugins/Output/oss4 | |
| parent | f4a87da830f5c2bd5b57fcc1e1e2de1b1b8eb120 (diff) | |
| download | qmmp-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.cpp | 28 | ||||
| -rw-r--r-- | src/plugins/Output/oss4/outputoss4.h | 4 |
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: |
