summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2007-09-02 23:53:16 +0000
committerLennart Poettering <lennart@poettering.net>2007-09-02 23:53:16 +0000
commit362b4b2b0c2b4737d1568d24c6a796a87dc8c7a1 (patch)
tree7801bf16c9f439ed26463aefb2ca64c3ec3c4b14
parente41c9bed6c792c566436c29e2116406acc06b05e (diff)
add option to kill a stream to popup menu
git-svn-id: file:///home/lennart/svn/public/pavucontrol/trunk@62 c17c95f2-f111-0410-90bf-f30a9569010c
-rw-r--r--src/pavucontrol.cc23
1 files changed, 19 insertions, 4 deletions
diff --git a/src/pavucontrol.cc b/src/pavucontrol.cc
index 4a313b3..0fc10c8 100644
--- a/src/pavucontrol.cc
+++ b/src/pavucontrol.cc
@@ -162,10 +162,11 @@ public:
uint32_t index, clientIndex, sinkIndex;
virtual void executeVolumeUpdate();
virtual void onMuteToggleButton();
+ virtual void onKill();
MainWindow *mainWindow;
Gtk::Menu menu, submenu;
- Gtk::MenuItem titleMenuItem;
+ Gtk::MenuItem titleMenuItem, killMenuItem;
struct SinkMenuItem {
SinkMenuItem(SinkInputWidget *w, const char *label, uint32_t i, bool active) :
@@ -380,7 +381,7 @@ void StreamWidget::executeVolumeUpdate() {
SinkWidget::SinkWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x) :
StreamWidget(cobject, x),
- defaultMenuItem("Default"){
+ defaultMenuItem("_Default", true){
add_events(Gdk::BUTTON_PRESS_MASK);
@@ -451,7 +452,7 @@ void SinkWidget::onDefaultToggle() {
SourceWidget::SourceWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x) :
StreamWidget(cobject, x),
- defaultMenuItem("Default"){
+ defaultMenuItem("_Default", true){
add_events(Gdk::BUTTON_PRESS_MASK);
@@ -523,12 +524,16 @@ void SourceWidget::onDefaultToggle() {
SinkInputWidget::SinkInputWidget(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& x) :
StreamWidget(cobject, x),
mainWindow(NULL),
- titleMenuItem("Move Stream...") {
+ titleMenuItem("_Move Stream...", true),
+ killMenuItem("_Terminate Stream", true) {
add_events(Gdk::BUTTON_PRESS_MASK);
menu.append(titleMenuItem);
titleMenuItem.set_submenu(submenu);
+
+ menu.append(killMenuItem);
+ killMenuItem.signal_activate().connect(sigc::mem_fun(*this, &SinkInputWidget::onKill));
}
SinkInputWidget::~SinkInputWidget() {
@@ -601,6 +606,16 @@ void SinkInputWidget::buildMenu() {
menu.show_all();
}
+void SinkInputWidget::onKill() {
+ pa_operation* o;
+ if (!(o = pa_context_kill_sink_input(context, index, NULL, NULL))) {
+ show_error("pa_context_kill_sink_input() failed");
+ return;
+ }
+
+ pa_operation_unref(o);
+}
+
void SinkInputWidget::SinkMenuItem::onToggle() {
if (widget->updating)