diff --git a/src/cardwidget.h b/src/cardwidget.h index 3837d5b..7c63681 100644 --- a/src/cardwidget.h +++ b/src/cardwidget.h @@ -23,6 +23,16 @@ #include "pavucontrol.h" +class PortInfo { +public: + Glib::ustring name; + Glib::ustring description; + uint32_t priority; + int available; + int direction; + int64_t latency_offset; +}; + class CardWidget : public Gtk::VBox { public: CardWidget(BaseObjectType* cobject, const Glib::RefPtr& x); @@ -36,6 +46,7 @@ public: bool updating; std::vector< std::pair > profiles; + std::map ports; Glib::ustring activeProfile; bool hasSinks; bool hasSources; diff --git a/src/mainwindow.cc b/src/mainwindow.cc index dc84682..fe085ef 100644 --- a/src/mainwindow.cc +++ b/src/mainwindow.cc @@ -290,6 +290,20 @@ void MainWindow::updateCard(const pa_card_info &info) { w->activeProfile = info.active_profile ? info.active_profile->name : ""; + w->ports.clear(); + for (uint32_t i = 0; i < info.n_ports; ++i) { + PortInfo p; + + p.name = info.ports[i]->name; + p.description = info.ports[i]->description; + p.priority = info.ports[i]->priority; + p.available = info.ports[i]->available; + p.direction = info.ports[i]->direction; + p.latency_offset = info.ports[i]->latency_offset; + + w->ports[p.name] = p; + } + w->updating = false; w->prepareMenu();