[pulseaudio-discuss] [PATCH] pavucontrol: Show available status
poljar (Damir Jelić)
poljarinho at gmail.com
Sat Jul 21 04:56:33 PDT 2012
>
> Having an object model that properly links ports to both cards and
> sinks/sources would very likely be useful in the future also. Actually,
> poljar has had the same problem with his latency offset feature. I don't
> know if he already has a solution that you could re-use...
>
I added a port class to the cardwidget. I don't know if we need the
proplists or the profile list so suggestions are welcome.
Note: this does nothing visible for now.
Patch attached.
-------------- next part --------------
>From 8c36669e9883a96ba77353f62c7539ccf6419ab7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?"poljar=20(Damir=20Jeli=C4=87)"?= <poljarinho at gmail.com>
Date: Sat, 21 Jul 2012 13:43:54 +0200
Subject: [PATCH] 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.
---
src/cardwidget.h | 11 +++++++++++
src/mainwindow.cc | 18 ++++++++++++++++++
2 files changed, 29 insertions(+)
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..6a4094c 100644
--- a/src/mainwindow.cc
+++ b/src/mainwindow.cc
@@ -290,6 +290,24 @@ void MainWindow::updateCard(const pa_card_info &info) {
w->activeProfile = info.active_profile ? info.active_profile->name : "";
+ if (pa_context_get_server_protocol_version(get_context()) >= 26) {
+ 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;
+
+ if (pa_context_get_server_protocol_version(get_context()) >= 27)
+ p.latency_offset = info.ports[i]->latency_offset;
+ else p.latency_offset = 0;
+
+ w->ports[p.name] = p;
+ }
+ }
+
w->updating = false;
w->prepareMenu();
--
1.7.11.2
More information about the pulseaudio-discuss
mailing list