diff --git a/src/mainwindow.cc b/src/mainwindow.cc index bae4c7a..2e1c58b 100644 --- a/src/mainwindow.cc +++ b/src/mainwindow.cc @@ -703,6 +703,7 @@ void MainWindow::createMonitorStreamForSinkInput(SinkInputWidget* w, uint32_t si if (w->peak) { pa_stream_disconnect(w->peak); + pa_stream_unref(w->peak); w->peak = NULL; } diff --git a/src/minimalstreamwidget.cc b/src/minimalstreamwidget.cc index 017b2ed..b6c60e8 100644 --- a/src/minimalstreamwidget.cc +++ b/src/minimalstreamwidget.cc @@ -39,6 +39,14 @@ MinimalStreamWidget::MinimalStreamWidget(BaseObjectType* cobject) : volumeMeterVisible(true) { } +MinimalStreamWidget::~MinimalStreamWidget() { + if (peak) { + pa_stream_disconnect(peak); + pa_stream_unref(peak); + peak = NULL; + } +} + void MinimalStreamWidget::init() { /* Set up the peak meter. This is not done in the constructor, because * channelsVBox is initialized by the subclasses, so it's not yet available diff --git a/src/minimalstreamwidget.h b/src/minimalstreamwidget.h index e5d774c..fbf6a99 100644 --- a/src/minimalstreamwidget.h +++ b/src/minimalstreamwidget.h @@ -26,6 +26,7 @@ class MinimalStreamWidget : public Gtk::VBox { public: MinimalStreamWidget(BaseObjectType* cobject); + virtual ~MinimalStreamWidget(); /* Subclass constructors are expected to initialize these variables. * MinimalStreamWidget can't initialize these, because the glade object