aboutsummaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2009-10-28 09:10:56 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2009-10-28 09:10:56 +0000
commit81a8ff3c3605ddcd22f2e6400e5a7a3e2f330f43 (patch)
tree1e6024c36a25d4de8e8f35bfe5b40065f2917bc5 /src/plugins
parentd460e76525fed2b11df1ae348b55eba87ec53d3f (diff)
downloadqmmp-81a8ff3c3605ddcd22f2e6400e5a7a3e2f330f43.tar.gz
qmmp-81a8ff3c3605ddcd22f2e6400e5a7a3e2f330f43.tar.bz2
qmmp-81a8ff3c3605ddcd22f2e6400e5a7a3e2f330f43.zip
alsa plugin: show more devices
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1336 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/Output/alsa/settingsdialog.cpp33
-rw-r--r--src/plugins/Output/alsa/settingsdialog.h1
2 files changed, 34 insertions, 0 deletions
diff --git a/src/plugins/Output/alsa/settingsdialog.cpp b/src/plugins/Output/alsa/settingsdialog.cpp
index 5790cf6ed..e47a27cd8 100644
--- a/src/plugins/Output/alsa/settingsdialog.cpp
+++ b/src/plugins/Output/alsa/settingsdialog.cpp
@@ -35,6 +35,7 @@ SettingsDialog::SettingsDialog ( QWidget *parent )
setAttribute ( Qt::WA_DeleteOnClose );
ui.deviceComboBox->setEditable ( TRUE );
getCards();
+ getSoftDevices();
connect (ui.deviceComboBox, SIGNAL(activated(int)),SLOT(setText(int)));
connect(ui.mixerCardComboBox, SIGNAL(activated(int)), SLOT(showMixerDevices(int)));
QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
@@ -88,6 +89,38 @@ void SettingsDialog::getCards()
}
}
+void SettingsDialog::getSoftDevices()
+{
+ void **hints = 0;
+ int i = 0;
+
+ if(snd_device_name_hint(-1, "pcm", &hints) < 0)
+ return;
+
+ while(hints[i])
+ {
+ char *type = snd_device_name_get_hint (hints[i], "IOID");
+ if (!type || !strcmp (type, "Output"))
+ {
+ char *device_name = snd_device_name_get_hint (hints[i], "NAME");
+ char *device_desc = snd_device_name_get_hint (hints[i], "DESC");
+
+ m_devices << QString(device_name);
+ QString str = QString("%1 (%2)").arg(device_desc).arg(device_name);
+ qDebug("%s", qPrintable(str));
+ ui.deviceComboBox->addItem(str);
+ free (device_name);
+ free (device_desc);
+ }
+ if(type)
+ free (type);
+ ++i;
+ }
+
+ if (hints)
+ snd_device_name_free_hint (hints);
+}
+
void SettingsDialog::getCardDevices(int card)
{
int pcm_device = -1, err;
diff --git a/src/plugins/Output/alsa/settingsdialog.h b/src/plugins/Output/alsa/settingsdialog.h
index 8b2867ff3..64b270735 100644
--- a/src/plugins/Output/alsa/settingsdialog.h
+++ b/src/plugins/Output/alsa/settingsdialog.h
@@ -49,6 +49,7 @@ private slots:
private:
Ui::SettingsDialog ui;
void getCards();
+ void getSoftDevices();
void getCardDevices(int card);
void getMixerDevices(QString card);
int getMixer(snd_mixer_t **mixer, QString card);