From 362b4b2b0c2b4737d1568d24c6a796a87dc8c7a1 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sun, 2 Sep 2007 23:53:16 +0000 Subject: 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 --- src/pavucontrol.cc | 23 +++++++++++++++++++---- 1 file 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& 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& 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& 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) -- cgit