diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2011-10-24 14:25:52 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2011-10-24 14:25:52 +0000 |
| commit | 64d2541b7455981ce90c24fadbb803280f4e34e1 (patch) | |
| tree | d812af2c4a1b82a2fb08da467f9e206720d001ac /src/plugins/Output/oss4/outputoss4.cpp | |
| parent | b4aaadf74cc5739753feae3adaa3a0de13dbadb6 (diff) | |
| download | qmmp-64d2541b7455981ce90c24fadbb803280f4e34e1.tar.gz qmmp-64d2541b7455981ce90c24fadbb803280f4e34e1.tar.bz2 qmmp-64d2541b7455981ce90c24fadbb803280f4e34e1.zip | |
OSS4: added volume restoration
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2434 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Output/oss4/outputoss4.cpp')
| -rw-r--r-- | src/plugins/Output/oss4/outputoss4.cpp | 33 |
1 files changed, 28 insertions, 5 deletions
diff --git a/src/plugins/Output/oss4/outputoss4.cpp b/src/plugins/Output/oss4/outputoss4.cpp index 056f3133e..b6f121c22 100644 --- a/src/plugins/Output/oss4/outputoss4.cpp +++ b/src/plugins/Output/oss4/outputoss4.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2010 by Ilya Kotov * + * Copyright (C) 2010-2011 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -45,6 +45,7 @@ extern "C" #include "outputoss4.h" OutputOSS4 *OutputOSS4::m_instance = 0; +VolumeControlOSS4 *OutputOSS4::m_vc = 0; OutputOSS4::OutputOSS4(QObject *parent) : Output(parent) { @@ -147,6 +148,9 @@ bool OutputOSS4::initialize(quint32 freq, int chan, Qmmp::AudioFormat format) ioctl(m_audio_fd, SNDCTL_DSP_HALT, 0); configure(freq, chan, format); + + if(m_vc) + m_vc->restore(); return true; } @@ -191,17 +195,25 @@ void OutputOSS4::reset() /***** MIXER *****/ VolumeControlOSS4::VolumeControlOSS4(QObject *parent) : VolumeControl(parent) -{} +{ + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + m_volume = settings.value("OSS4/volume", 0x3232).toInt(); + OutputOSS4::m_vc = this; +} VolumeControlOSS4::~VolumeControlOSS4() -{} +{ + OutputOSS4::m_vc = 0; + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + settings.setValue("OSS4/volume", m_volume); +} void VolumeControlOSS4::setVolume(int l, int r) { + m_volume = (r << 8) | l; if(OutputOSS4::instance() && OutputOSS4::instance()->fd() >= 0) { - int v = (r << 8) | l; - ioctl(OutputOSS4::instance()->fd(), SNDCTL_DSP_SETPLAYVOL, &v); + ioctl(OutputOSS4::instance()->fd(), SNDCTL_DSP_SETPLAYVOL, &m_volume); } } @@ -216,5 +228,16 @@ void VolumeControlOSS4::volume(int *ll,int *rr) v = 0; *rr = (v & 0xFF00) >> 8; *ll = (v & 0x00FF); + m_volume = v; + } + else + { + *rr = (m_volume & 0xFF00) >> 8; + *ll = (m_volume & 0x00FF); } } + +void VolumeControlOSS4::restore() +{ + setVolume((m_volume & 0x00FF), (m_volume & 0xFF00) >> 8); +} |
