summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpoljar (Damir Jelić) <poljarinho@gmail.com>2012-07-26 15:42:09 +0200
committerTanu Kaskinen <tanuk@iki.fi>2012-07-27 08:54:10 +0300
commit1a23cdfe6d6fe8b17f5ecdb006c0f4f3cff39282 (patch)
tree4f32ded9335323807cfe371cb4e1c63f6c7a5c16
parentabeb68dcf265a0fc9fd8d3f6997fe219625934cd (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.h11
-rw-r--r--src/mainwindow.cc14
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();