diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2012-03-07 20:04:51 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2012-03-07 20:04:51 +0000 |
| commit | 74afcc2d9356fef5dbd25f4e7aaabb021c0bfc29 (patch) | |
| tree | f76222901b123facc552c614bf9d1753e2da0afc /src/plugins/Output/oss4/outputoss4.cpp | |
| parent | 7559299d77b3c375e9b718f986bc079215bf1d27 (diff) | |
| download | qmmp-74afcc2d9356fef5dbd25f4e7aaabb021c0bfc29.tar.gz qmmp-74afcc2d9356fef5dbd25f4e7aaabb021c0bfc29.tar.bz2 qmmp-74afcc2d9356fef5dbd25f4e7aaabb021c0bfc29.zip | |
some volume api changes
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2673 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Output/oss4/outputoss4.cpp')
| -rw-r--r-- | src/plugins/Output/oss4/outputoss4.cpp | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/src/plugins/Output/oss4/outputoss4.cpp b/src/plugins/Output/oss4/outputoss4.cpp index 71cda5dda..6d3bad527 100644 --- a/src/plugins/Output/oss4/outputoss4.cpp +++ b/src/plugins/Output/oss4/outputoss4.cpp @@ -45,7 +45,7 @@ extern "C" #include "outputoss4.h" OutputOSS4 *OutputOSS4::m_instance = 0; -VolumeControlOSS4 *OutputOSS4::m_vc = 0; +VolumeOSS4 *OutputOSS4::m_vc = 0; OutputOSS4::OutputOSS4(QObject *parent) : Output(parent) { @@ -194,7 +194,7 @@ void OutputOSS4::reset() } /***** MIXER *****/ -VolumeControlOSS4::VolumeControlOSS4(QObject *parent) : VolumeControl(parent) +VolumeOSS4::VolumeOSS4() { QSettings settings(Qmmp::configFile(), QSettings::IniFormat); m_volume = settings.value("OSS4/volume", 0x3232).toInt(); @@ -202,15 +202,17 @@ VolumeControlOSS4::VolumeControlOSS4(QObject *parent) : VolumeControl(parent) restore(); } -VolumeControlOSS4::~VolumeControlOSS4() +VolumeOSS4::~VolumeOSS4() { OutputOSS4::m_vc = 0; QSettings settings(Qmmp::configFile(), QSettings::IniFormat); settings.setValue("OSS4/volume", m_volume); } -void VolumeControlOSS4::setVolume(int l, int r) +void VolumeOSS4::setVolume(int channel, int value) { + 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; if(OutputOSS4::instance() && OutputOSS4::instance()->fd() >= 0) { @@ -218,27 +220,27 @@ void VolumeControlOSS4::setVolume(int l, int r) } } -void VolumeControlOSS4::volume(int *ll,int *rr) +int VolumeOSS4::volume(int channel) { - *ll = 0; - *rr = 0; if(OutputOSS4::instance() && OutputOSS4::instance()->fd() >= 0) { int v = 0; if (ioctl(OutputOSS4::instance()->fd(), SNDCTL_DSP_GETPLAYVOL, &v) < 0) v = 0; - *rr = (v & 0xFF00) >> 8; - *ll = (v & 0x00FF); m_volume = v; + if(channel == Volume::LEFT_CHANNEL) + return (v & 0x00FF); + return (v & 0xFF00) >> 8; } else { - *rr = (m_volume & 0xFF00) >> 8; - *ll = (m_volume & 0x00FF); + if(channel == Volume::LEFT_CHANNEL) + return (m_volume & 0x00FF); + return (m_volume & 0xFF00) >> 8; } } -void VolumeControlOSS4::restore() +void VolumeOSS4::restore() { setVolume((m_volume & 0x00FF), (m_volume & 0xFF00) >> 8); } |
