summaryrefslogtreecommitdiffstats
path: root/src/ServerInfoManager.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/ServerInfoManager.cc')
-rw-r--r--src/ServerInfoManager.cc41
1 files changed, 30 insertions, 11 deletions
diff --git a/src/ServerInfoManager.cc b/src/ServerInfoManager.cc
index 02268ec..13c751a 100644
--- a/src/ServerInfoManager.cc
+++ b/src/ServerInfoManager.cc
@@ -13,6 +13,7 @@ SinkInfo::SinkInfo(const struct pa_sink_info &i) :
owner_module(i.owner_module),
volume(i.volume),
latency(i.latency),
+ monitor_source_name(i.monitor_source_name),
window(NULL) {
}
@@ -30,6 +31,7 @@ void SinkInfo::update(const struct pa_sink_info &i) {
owner_module = i.owner_module;
volume = i.volume;
latency = i.latency;
+ monitor_source_name = i.monitor_source_name;
if (window)
window->updateInfo(*this);
@@ -54,6 +56,7 @@ SourceInfo::SourceInfo(const struct pa_source_info &i) :
sample_spec(i.sample_spec),
owner_module(i.owner_module),
monitor_of_sink(i.monitor_of_sink),
+ latency(i.latency),
window(NULL) {
}
@@ -69,6 +72,7 @@ void SourceInfo::update(const struct pa_source_info &i) {
sample_spec = i.sample_spec;
owner_module = i.owner_module;
monitor_of_sink = i.monitor_of_sink;
+ latency = i.latency;
if (window)
window->updateInfo(*this);
@@ -211,6 +215,8 @@ SourceOutputInfo::SourceOutputInfo(const struct pa_source_output_info &i) :
source(i.source),
client(i.client),
owner_module(i.owner_module),
+ buffer_usec(i.buffer_usec),
+ source_usec(i.source_usec),
window(NULL) {
}
@@ -226,6 +232,8 @@ void SourceOutputInfo::update(const struct pa_source_output_info &i) {
source = i.source;
client = i.client;
owner_module = i.owner_module;
+ buffer_usec = i.buffer_usec;
+ source_usec = i.source_usec;
if (window)
window->updateInfo(*this);
@@ -250,6 +258,8 @@ SampleInfo::SampleInfo(const struct pa_sample_info &i) :
volume(i.volume),
duration(i.duration),
bytes(i.bytes),
+ lazy(!!i.lazy),
+ filename(i.filename),
window(NULL) {
}
@@ -265,6 +275,8 @@ void SampleInfo::update(const struct pa_sample_info &i) {
volume = i.volume;
duration = i.duration;
bytes = i.bytes;
+ lazy = !!i.lazy;
+ filename = i.filename;
if (window)
window->updateInfo(*this);
@@ -294,9 +306,7 @@ extern "C" {
static void subscribe_callback(struct pa_context *c, enum pa_subscription_event_type t, uint32_t index, void *userdata);
};
-static void server_info_callback(struct pa_context *c, const struct pa_server_info *i, void *userdata) {
- ServerInfoManager *si = (ServerInfoManager*) userdata;
-
+static void server_info_callback(struct pa_context *c, const struct pa_server_info *i, void *) {
if (!i) {
mainWindow->showFailure(pa_strerror(pa_context_errno(c)));
return;
@@ -305,37 +315,37 @@ static void server_info_callback(struct pa_context *c, const struct pa_server_in
mainWindow->updateInfo(*i);
}
-static void sink_info_callback(struct pa_context *c, const struct pa_sink_info *i, int is_last, void *userdata) {
+static void sink_info_callback(struct pa_context *, const struct pa_sink_info *i, int, void *userdata) {
ServerInfoManager *si = (ServerInfoManager*) userdata;
if (i) si->updateInfo(*i);
}
-static void source_info_callback(struct pa_context *c, const struct pa_source_info *i, int is_last, void *userdata) {
+static void source_info_callback(struct pa_context *, const struct pa_source_info *i, int, void *userdata) {
ServerInfoManager *si = (ServerInfoManager*) userdata;
if (i) si->updateInfo(*i);
}
-static void client_info_callback(struct pa_context *c, const struct pa_client_info *i, int is_last, void *userdata) {
+static void client_info_callback(struct pa_context *, const struct pa_client_info *i, int, void *userdata) {
ServerInfoManager *si = (ServerInfoManager*) userdata;
if (i) si->updateInfo(*i);
}
-static void module_info_callback(struct pa_context *c, const struct pa_module_info *i, int is_last, void *userdata) {
+static void module_info_callback(struct pa_context *, const struct pa_module_info *i, int, void *userdata) {
ServerInfoManager *si = (ServerInfoManager*) userdata;
if (i) si->updateInfo(*i);
}
-static void sink_input_info_callback(struct pa_context *c, const struct pa_sink_input_info *i, int is_last, void *userdata) {
+static void sink_input_info_callback(struct pa_context *, const struct pa_sink_input_info *i, int, void *userdata) {
ServerInfoManager *si = (ServerInfoManager*) userdata;
if (i) si->updateInfo(*i);
}
-static void source_output_info_callback(struct pa_context *c, const struct pa_source_output_info *i, int is_last, void *userdata) {
+static void source_output_info_callback(struct pa_context *, const struct pa_source_output_info *i, int, void *userdata) {
ServerInfoManager *si = (ServerInfoManager*) userdata;
if (i) si->updateInfo(*i);
}
-static void sample_info_callback(struct pa_context *c, const struct pa_sample_info *i, int is_last, void *userdata) {
+static void sample_info_callback(struct pa_context *, const struct pa_sample_info *i, int, void *userdata) {
ServerInfoManager *si = (ServerInfoManager*) userdata;
if (i) si->updateInfo(*i);
}
@@ -679,7 +689,6 @@ void ServerInfoManager::showStatWindow() {
statWindow = StatWindow::create();
statWindow->show();
}
-
}
void ServerInfoManager::playSample(uint32_t sample, uint32_t sink) {
@@ -691,3 +700,13 @@ void ServerInfoManager::playSample(uint32_t sample, uint32_t sink) {
pa_operation_unref(pa_context_play_sample(&context, samplei->name.c_str(), sinki->name.c_str(), PA_VOLUME_NORM, NULL, NULL));
}
+
+#ifndef PAVUMETER_PATH
+#define PAVUMETER_PATH "pavumeter"
+#endif
+
+void ServerInfoManager::runVolumeMeter(const Glib::ustring &source) {
+ char t[256];
+ snprintf(t, sizeof(t), "%s %s", PAVUMETER_PATH, source.c_str());
+ Glib::spawn_command_line_async(t);
+}