[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdemultimedia/kmix
From: Christian Esken <esken () kde ! org>
Date: 2011-07-21 23:15:32
Message-ID: 20110721231532.E78E1AC890 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1242602 by esken:
Imlement multi-backend intialization (aka "backend filter")
M +2 -1 apps/kmix.cpp
M +1 -0 apps/kmix.h
M +1 -1 apps/kmixctrl.cpp
M +2 -1 apps/kmixd.cpp
M +1 -0 apps/kmixd.h
M +3 -3 core/mixdevice.cpp
M +21 -3 core/mixertoolbox.cpp
M +2 -1 core/mixertoolbox.h
M +8 -10 gui/kmixdockwidget.cpp
--- trunk/KDE/kdemultimedia/kmix/apps/kmix.cpp #1242601:1242602
@@ -89,7 +89,7 @@
KGlobal::locale()->insertCatalog( QLatin1String( "kmix-controls" ));
initWidgets();
initPrefDlg();
- MixerToolBox::instance()->initMixer(m_multiDriverMode, m_hwInfoString);
+ MixerToolBox::instance()->initMixer(m_multiDriverMode, m_backendFilter, \
m_hwInfoString);
KMixDeviceManager *theKMixDeviceManager = KMixDeviceManager::instance();
initActionsAfterInitMixer(); // init actions that require initialized mixer \
backend(s).
@@ -434,6 +434,7 @@
//}
QString mixerIgnoreExpression = config.readEntry( "MixerIgnoreExpression", \
"Modem" );
MixerToolBox::instance()->setMixerIgnoreExpression(mixerIgnoreExpression);
+ m_backendFilter = config.readEntry<>( "Backends", QList<QString>() );
if ( orientationString == "Horizontal" )
m_toplevelOrientation = Qt::Horizontal;
--- trunk/KDE/kdemultimedia/kmix/apps/kmix.h #1242601:1242602
@@ -123,6 +123,7 @@
QString m_defaultCardOnStart;
bool m_dontSetDefaultCardOnStart;
QLabel *m_errorLabel;
+ QList<QString> m_backendFilter;
ViewDockAreaPopup *_dockAreaPopup;
unsigned int m_configVersion;
void showVolumeDisplay();
--- trunk/KDE/kdemultimedia/kmix/apps/kmixctrl.cpp #1242601:1242602
@@ -57,7 +57,7 @@
// create mixers
QString dummyStringHwinfo;
- MixerToolBox::instance()->initMixer(false, dummyStringHwinfo);
+ MixerToolBox::instance()->initMixer(false, QList<QString>(), dummyStringHwinfo);
// load volumes
if ( args->isSet("restore") )
--- trunk/KDE/kdemultimedia/kmix/apps/kmixd.cpp #1242601:1242602
@@ -100,7 +100,7 @@
//KGlobal::locale()->insertCatalog( QLatin1String( "kmix-controls" ));
//initWidgets();
//initPrefDlg();
- MixerToolBox::instance()->initMixer(m_multiDriverMode, m_hwInfoString);
+ MixerToolBox::instance()->initMixer(m_multiDriverMode, m_backendFilter, \
m_hwInfoString); KMixDeviceManager *theKMixDeviceManager = \
KMixDeviceManager::instance(); //recreateGUI(false);
fixConfigAfterRead();
@@ -222,6 +222,7 @@
Mixer::setGlobalMaster(mixerMasterCard, masterDev, true);
//}
QString mixerIgnoreExpression = config.readEntry( "MixerIgnoreExpression", \
"Modem" ); + m_backendFilter = config.readEntry<>( "Backends", QList<QString>() );
MixerToolBox::instance()->setMixerIgnoreExpression(mixerIgnoreExpression);
}
--- trunk/KDE/kdemultimedia/kmix/apps/kmixd.h #1242601:1242602
@@ -84,6 +84,7 @@
bool m_dontSetDefaultCardOnStart;
unsigned int m_configVersion;
//void increaseOrDecreaseVolume(bool increase);
+ QList<QString> m_backendFilter;
private slots:
void saveConfig();
--- trunk/KDE/kdemultimedia/kmix/core/mixdevice.cpp #1242601:1242602
@@ -212,9 +212,9 @@
void MixDevice::setRecSource(bool value) { _captureVolume.setSwitch( value ); }
bool MixDevice::isEnum() { return ( ! _enumValues.empty() ); }
-int MixDevice::mediaPlay() { mixer()->mediaPlay(_id); }
-int MixDevice::mediaPrev() { mixer()->mediaPrev(_id); }
-int MixDevice::mediaNext() { mixer()->mediaNext(_id); }
+int MixDevice::mediaPlay() { return mixer()->mediaPlay(_id); }
+int MixDevice::mediaPrev() { return mixer()->mediaPrev(_id); }
+int MixDevice::mediaNext() { return mixer()->mediaNext(_id); }
bool MixDevice::operator==(const MixDevice& other) const
{
--- trunk/KDE/kdemultimedia/kmix/core/mixertoolbox.cpp #1242601:1242602
@@ -70,12 +70,24 @@
* @par multiDriverMode Whether the Mixer scan should try more all backendends.
* 'true' means to scan all backends. 'false' means: After scanning the
* current backend the next backend is only scanned if no Mixers were found \
yet. + * @par backendList Activated backends (typically a value from the kmixrc or a \
default)
* @par ref_hwInfoString Here a descripitive text of the scan is returned (Hardware \
Information)
*/
-void MixerToolBox::initMixer(bool multiDriverMode, QString& ref_hwInfoString)
+void MixerToolBox::initMixer(bool multiDriverMode, QList<QString> backendList, \
QString& ref_hwInfoString) {
- //kDebug(67100) << "IN MixerToolBox::initMixer()";
+ initMixerInternal(multiDriverMode, backendList, ref_hwInfoString);
+ if ( Mixer::mixers().isEmpty() )
+ initMixerInternal(multiDriverMode, QList<QString>(), ref_hwInfoString); // \
try again without filter +}
+
+/**
+ *
+ */
+void MixerToolBox::initMixerInternal(bool multiDriverMode, QList<QString> \
backendList, QString& ref_hwInfoString) +{
+ bool useBackendFilter = ( ! backendList.isEmpty() );
+
// Find all mixers and initialize them
int drvNum = Mixer::numDrivers();
@@ -111,7 +123,13 @@
{
QString driverName = Mixer::driverName(drv);
kDebug(67100) << "Looking for mixers with the : " << driverName << " driver";
+ if ( useBackendFilter && ! backendList.contains(driverName) )
+ {
+ kDebug() << "Skipping " << driverName << " (filtered)";
+ continue;
+ }
+
if ( autodetectionFinished ) {
// inner loop indicates that we are finished => sane exit from outer loop
break;
@@ -129,7 +147,7 @@
bool mixerAccepted = possiblyAddMixer(mixer);
/* Lets decide if the autoprobing shall end (BTW: In multiDriver mode we \
scan all devices, so no check is necessary) */
- if ( ! multiDriverMode ) {
+ if ( (! multiDriverMode) && ( ! useBackendFilter) ) {
// In Single-Driver-mode we only need to check after we reached \
devNumMax if ( dev == devNumMax && Mixer::mixers().count() != 0 )
autodetectionFinished = true; // highest device number of driver and \
a Mixer => finished
--- trunk/KDE/kdemultimedia/kmix/core/mixertoolbox.h #1242601:1242602
@@ -42,7 +42,8 @@
public:
static MixerToolBox* instance();
- void initMixer(bool, QString&);
+ void initMixer(bool, QList<QString> backendList, QString&);
+ void initMixerInternal(bool, QList<QString> backendList, QString&);
void deinitMixer();
bool possiblyAddMixer(Mixer *mixer);
void removeMixer(Mixer *mixer);
--- trunk/KDE/kdemultimedia/kmix/gui/kmixdockwidget.cpp #1242601:1242602
@@ -387,17 +387,15 @@
MixDevice *md = Mixer::getGlobalMasterMD();
if ( md != 0 )
{
- Volume vol = md->playbackVolume();
- if ( md->playbackVolume().hasVolume() )
- vol = md->playbackVolume();
- else
- vol = md->captureVolume();
-
+ Volume &vol = ( md->playbackVolume().hasVolume() ) ? md->playbackVolume() : \
md->captureVolume(); int inc = vol.maxVolume() / 20;
if ( inc < 1 ) inc = 1;
- vol.changeAllVolumes( (inc * delta) / 120 );
+ long int cv = inc * (delta / 120 );
+ kDebug() << "twe: " << cv << " : " << vol;
+ vol.changeAllVolumes(cv);
+ kDebug() << "twe: " << cv << " : " << vol;
/* for ( int i = 0; i < vol.count(); i++ ) {
int newVal = vol[i] + (inc * (delta / 120));
if( newVal < 0 ) newVal = 0;
@@ -410,11 +408,11 @@
_audioPlayer->setCurrentSource(fileName);
_audioPlayer->play();
}
- if ( md->playbackVolume().hasVolume() )
+/* if ( md->playbackVolume().hasVolume() )
md->playbackVolume().setVolume(vol);
else
- md->captureVolume().setVolume(vol);
- m_mixer->commitVolumeChange(md);
+ md->captureVolume().setVolume(vol);;*/
+ md->mixer()->commitVolumeChange(md);
setVolumeTip();
}
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic