From 09c9b73913574a6862135bbcb9d7c2da1f3eea23 Mon Sep 17 00:00:00 2001 From: Michal Ratajsky Date: Thu, 23 Oct 2014 22:02:39 +0200 Subject: Fix memory management problems --- backends/pulse/pulse-port-switch.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'backends/pulse/pulse-port-switch.c') diff --git a/backends/pulse/pulse-port-switch.c b/backends/pulse/pulse-port-switch.c index db06a7c..71e0709 100644 --- a/backends/pulse/pulse-port-switch.c +++ b/backends/pulse/pulse-port-switch.c @@ -53,6 +53,7 @@ static void pulse_port_switch_set_property (GObject *object, GParamSpec *pspec); static void pulse_port_switch_init (PulsePortSwitch *swtch); +static void pulse_port_switch_dispose (GObject *object); G_DEFINE_ABSTRACT_TYPE (PulsePortSwitch, pulse_port_switch, MATE_MIXER_TYPE_SWITCH) @@ -73,6 +74,7 @@ pulse_port_switch_class_init (PulsePortSwitchClass *klass) MateMixerSwitchClass *switch_class; object_class = G_OBJECT_CLASS (klass); + object_class->dispose = pulse_port_switch_dispose; object_class->get_property = pulse_port_switch_get_property; object_class->set_property = pulse_port_switch_set_property; @@ -147,6 +149,20 @@ pulse_port_switch_init (PulsePortSwitch *swtch) PulsePortSwitchPrivate); } +static void +pulse_port_switch_dispose (GObject *object) +{ + PulsePortSwitch *swtch; + + swtch = PULSE_PORT_SWITCH (object); + + if (swtch->priv->ports != NULL) { + g_list_free_full (swtch->priv->ports, g_object_unref); + swtch->priv->ports = NULL; + } + G_OBJECT_CLASS (pulse_port_switch_parent_class)->dispose (object); +} + PulseStream * pulse_port_switch_get_stream (PulsePortSwitch *swtch) { -- cgit v1.2.1