diff options
author | poljar (Damir Jelić) <poljarinho@gmail.com> | 2012-07-26 15:42:09 +0200 |
---|---|---|
committer | Tanu Kaskinen <tanuk@iki.fi> | 2012-07-27 08:54:10 +0300 |
commit | 1a23cdfe6d6fe8b17f5ecdb006c0f4f3cff39282 (patch) | |
tree | 4f32ded9335323807cfe371cb4e1c63f6c7a5c16 | |
parent | abeb68dcf265a0fc9fd8d3f6997fe219625934cd (diff) |
cardwidget: Add a port class
The cardwidget should cache all the relevant data for the ports.
This change introduces a new port class which holds the port info for
the card.
-rw-r--r-- | src/cardwidget.h | 11 | ||||
-rw-r--r-- | src/mainwindow.cc | 14 |
2 files changed, 25 insertions, 0 deletions
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<Gtk::Builder>& x); @@ -36,6 +46,7 @@ public: bool updating; std::vector< std::pair<Glib::ustring,Glib::ustring> > profiles; + std::map<Glib::ustring, PortInfo> 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(); |