src/cardwidget.h  |    1 +
 src/mainwindow.cc |   12 +++++++++++-
 2 files changed, 12 insertions(+), 1 deletion(-)

New commits:
commit bba68bdf95ed48427c1d24a2fb0dd1b6f8400032
Author: Martin Rys <spleefe...@gmail.com>
Date:   Wed Sep 17 16:15:28 2025 +0000

    Use port device name when available, this usually identifies a device 
profile...

diff --git a/src/cardwidget.h b/src/cardwidget.h
index f2c78f8..dbe3dcc 100644
--- a/src/cardwidget.h
+++ b/src/cardwidget.h
@@ -26,6 +26,7 @@
 class PortInfo {
   public:
     Glib::ustring name;
+    Glib::ustring port_device_name;
     Glib::ustring description;
     uint32_t priority;
     int available;
diff --git a/src/mainwindow.cc b/src/mainwindow.cc
index 526146d..dc6c78d 100644
--- a/src/mainwindow.cc
+++ b/src/mainwindow.cc
@@ -356,7 +356,7 @@ void MainWindow::selectTab(int tab_number) {
 void MainWindow::updateCard(const pa_card_info &info) {
     CardWidget *w;
     bool is_new = false;
-    const char *description, *icon;
+    const char *description, *icon, *port_device_name;
     std::set<pa_card_profile_info2,profile_prio_compare> profile_priorities;
 
     if (cardWidgets.count(info.index))
@@ -396,6 +396,12 @@ void MainWindow::updateCard(const pa_card_info &info) {
     for (uint32_t i = 0; i < info.n_ports; ++i) {
         PortInfo p;
 
+        port_device_name = pa_proplist_gets(info.ports[i]->proplist, 
PA_PROP_DEVICE_PRODUCT_NAME);
+        // device.product.name is not guaranteed to exist on a port
+        if (port_device_name != nullptr) {
+            p.port_device_name = std::string(port_device_name);
+        }
+
         p.name = info.ports[i]->name;
         p.description = info.ports[i]->description;
         p.priority = info.ports[i]->priority;
@@ -420,6 +426,10 @@ void MainWindow::updateCard(const pa_card_info &info) {
             if (std::find(port.profiles.begin(), port.profiles.end(), 
profileIt->name) == port.profiles.end())
                 continue;
 
+            // If port has a device name, add it to the description
+            if (!port.port_device_name.empty()) {
+                desc += " [" + std::string(port.port_device_name) + "]";
+            }
             if (port.available == PA_PORT_AVAILABLE_NO)
                 hasNo = true;
             else {

Reply via email to