summaryrefslogtreecommitdiff
path: root/gvc-mixer-card.c
diff options
context:
space:
mode:
Diffstat (limited to 'gvc-mixer-card.c')
-rw-r--r--gvc-mixer-card.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/gvc-mixer-card.c b/gvc-mixer-card.c
index c512c51..0953203 100644
--- a/gvc-mixer-card.c
+++ b/gvc-mixer-card.c
@@ -276,7 +276,6 @@ gvc_mixer_card_get_profiles (GvcMixerCard *card)
return card->priv->profiles;
}
-
/**
* gvc_mixer_card_get_ports:
*
@@ -339,6 +338,17 @@ gvc_mixer_card_get_gicon (GvcMixerCard *card)
return g_themed_icon_new_with_default_fallbacks (card->priv->icon_name);
}
+static void
+free_port (GvcMixerCardPort *port)
+{
+ g_free (port->port);
+ g_free (port->human_port);
+ g_free (port->icon_name);
+ g_list_free (port->profiles);
+
+ g_free (port);
+}
+
/**
* gvc_mixer_card_set_ports:
* @ports: (transfer full) (element-type GvcMixerCardPort):
@@ -350,6 +360,7 @@ gvc_mixer_card_set_ports (GvcMixerCard *card,
g_return_val_if_fail (GVC_IS_MIXER_CARD (card), FALSE);
g_return_val_if_fail (card->priv->ports == NULL, FALSE);
+ g_list_free_full (card->priv->ports, (GDestroyNotify) free_port);
card->priv->ports = ports;
return TRUE;
@@ -563,6 +574,9 @@ gvc_mixer_card_finalize (GObject *object)
g_list_free (mixer_card->priv->profiles);
mixer_card->priv->profiles = NULL;
+ g_list_free_full (mixer_card->priv->ports, (GDestroyNotify) free_port);
+ mixer_card->priv->ports = NULL;
+
G_OBJECT_CLASS (gvc_mixer_card_parent_class)->finalize (object);
}