From 8d94fbbef36c4b78948bb9702e3a0c385526c21a Mon Sep 17 00:00:00 2001
From: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
Date: Tue, 25 Jun 2019 10:38:16 -0400
Subject: [PATCH] avmodel: parse output indices too when getting device name by
 type

Change-Id: I71a777a73dc64c1f418b00cbf1839e25a02dbb81
---
 src/avmodel.cpp | 25 ++++++++++++++++++-------
 1 file changed, 18 insertions(+), 7 deletions(-)

diff --git a/src/avmodel.cpp b/src/avmodel.cpp
index c597240e..4a28fe58 100644
--- a/src/avmodel.cpp
+++ b/src/avmodel.cpp
@@ -292,11 +292,11 @@ AVModel::getAudioManager() const
 std::vector<std::string>
 AVModel::getAudioOutputDevices() const
 {
-    QStringList managers = ConfigurationManager::instance()
+    QStringList devices = ConfigurationManager::instance()
         .getAudioOutputDeviceList();
     std::vector<std::string> result;
-    for (const auto& manager : managers) {
-        result.emplace_back(manager.toStdString());
+    for (const auto& device : devices) {
+        result.emplace_back(device.toStdString());
     }
     return result;
 }
@@ -304,11 +304,11 @@ AVModel::getAudioOutputDevices() const
 std::vector<std::string>
 AVModel::getAudioInputDevices() const
 {
-    QStringList managers = ConfigurationManager::instance()
+    QStringList devices = ConfigurationManager::instance()
         .getAudioInputDeviceList();
     std::vector<std::string> result;
-    for (const auto& manager : managers) {
-        result.emplace_back(manager.toStdString());
+    for (const auto& device : devices) {
+        result.emplace_back(device.toStdString());
     }
     return result;
 }
@@ -740,7 +740,18 @@ AVModelPimpl::getDevice(int type) const
         }
         auto deviceIdx = currentDevicesIdx[type].toUInt();
         for (const auto& dev : devices) {
-            int idx = ConfigurationManager::instance().getAudioInputDeviceIndex(dev.c_str());
+            int idx;
+            switch (type) {
+            case 1: // INPUT
+                idx = ConfigurationManager::instance().getAudioInputDeviceIndex(dev.c_str());
+                break;
+            case 0: // OUTPUT
+            case 2: // RINGTONE
+                idx = ConfigurationManager::instance().getAudioOutputDeviceIndex(dev.c_str());
+                break;
+            default:
+                break;
+            }
             if (idx == deviceIdx) {
                 return dev;
             }
-- 
GitLab