[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdelibs/phonon/platform_kde
From: Matthias Kretz <kretz () kde ! org>
Date: 2008-04-22 9:47:11
Message-ID: 1208857631.870958.2868.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 799772 by mkretz:
- the output/input infos don't need an order - the order is stored in the sorted \
indexes variable already
- when unplugging a device, don't remove it but only mark it as unavailable
- when plugging a device make sure the sorted indexes are not duplicated
M +27 -16 devicelisting.cpp
M +2 -2 devicelisting.h
--- trunk/KDE/kdelibs/phonon/platform_kde/devicelisting.cpp #799771:799772
@@ -22,7 +22,7 @@
#include "../libkaudiodevicelist/audiodeviceenumerator.h"
#include "../libkaudiodevicelist/audiodevice.h"
-#include <QtCore/QMutableMapIterator>
+#include <QtCore/QMutableHashIterator>
#include <QtCore/QTimerEvent>
#include <kconfiggroup.h>
#include <kdebug.h>
@@ -166,7 +166,7 @@
}
} else {
// remove all OSS devices
- QMutableMapIterator<int, QHash<QByteArray, QVariant> > it(m_outputInfos);
+ QMutableHashIterator<int, QHash<QByteArray, QVariant> > it(m_outputInfos);
while (it.hasNext()) {
it.next();
if (it.value().value("driver") == QLatin1String("oss")) {
@@ -238,36 +238,47 @@
kDebug(600) << dev.cardName();
if (dev.isPlaybackDevice()) {
m_outputInfos.insert(-dev.index(), propertiesHashFor(dev));
- m_sortedOutputIndexes.insert(-m_outputInfos[-dev.index()].value("initialPreference").toInt(), \
-dev.index()); + const int initialPreference = \
m_outputInfos[-dev.index()].value("initialPreference").toInt(); + if \
(!m_sortedOutputIndexes.contains(-initialPreference, -dev.index())) { + \
m_sortedOutputIndexes.insert(-initialPreference, -dev.index()); + }
m_signalTimer.start(0, this);
}
if (dev.isCaptureDevice()) {
m_inputInfos.insert(-dev.index(), propertiesHashFor(dev));
- m_sortedInputIndexes.insert(-m_inputInfos[-dev.index()].value("initialPreference").toInt(), \
-dev.index()); + const int initialPreference = \
m_inputInfos[-dev.index()].value("initialPreference").toInt(); + if \
(!m_sortedInputIndexes.contains(-initialPreference, -dev.index())) { + \
m_sortedInputIndexes.insert(-initialPreference, -dev.index()); + }
m_signalTimer.start(0, this);
}
}
+static bool markAsUnavailable(QHash<int, QHash<QByteArray, QVariant> > &infos, int \
index) +{
+ QHash<int, QHash<QByteArray, QVariant> >::iterator it = infos.find(index);
+ if (it != infos.end()) {
+ it.value().insert("description", i18n("<html>This device is currently not \
available " + "(either it is unplugged or the driver is not \
loaded).</html>")); + it.value().insert("available", false);
+ it.value().insert("deviceIds", QStringList());
+ return true;
+ }
+ return false;
+}
+
void DeviceListing::deviceUnplugged(const Phonon::AudioDevice &dev)
{
kDebug(600) << dev.cardName();
if (dev.isPlaybackDevice()) {
- QMap<int, QHash<QByteArray, QVariant> >::iterator it = \
m_outputInfos.find(-dev.index());
- if (it != m_outputInfos.end()) {
- const int initialPreference = \
it.value().value("initialPreference").toInt();
- m_sortedOutputIndexes.remove(-initialPreference, it.key());
- m_outputInfos.erase(it);
+ if (markAsUnavailable(m_outputInfos, -dev.index())) {
+ m_signalTimer.start(0, this);
}
- m_signalTimer.start(0, this);
}
if (dev.isCaptureDevice()) {
- QMap<int, QHash<QByteArray, QVariant> >::iterator it = \
m_inputInfos.find(-dev.index());
- if (it != m_inputInfos.end()) {
- const int initialPreference = \
it.value().value("initialPreference").toInt();
- m_sortedInputIndexes.remove(-initialPreference, it.key());
- m_inputInfos.erase(it);
+ if (markAsUnavailable(m_inputInfos, -dev.index())) {
+ m_signalTimer.start(0, this);
}
- m_signalTimer.start(0, this);
}
}
--- trunk/KDE/kdelibs/phonon/platform_kde/devicelisting.h #799771:799772
@@ -64,8 +64,8 @@
void checkAudioInputs();
QMultiMap<int, int> m_sortedOutputIndexes;
QMultiMap<int, int> m_sortedInputIndexes;
- QMap<int, QHash<QByteArray, QVariant> > m_outputInfos;
- QMap<int, QHash<QByteArray, QVariant> > m_inputInfos;
+ QHash<int, QHash<QByteArray, QVariant> > m_outputInfos;
+ QHash<int, QHash<QByteArray, QVariant> > m_inputInfos;
QBasicTimer m_signalTimer;
bool m_useOss : 1;
};
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic