From bce4a2dea7c9c2124b875ecdcb4356cc9cd1476c Mon Sep 17 00:00:00 2001 From: Stefan Sauer Date: Thu, 3 Sep 2015 10:29:35 +0200 Subject: [PATCH] leaks: plug various memory leaks --- src/lib/core/sink-bin.c | 2 ++ src/ui/edit/machine-canvas-item.c | 13 +++++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/lib/core/sink-bin.c b/src/lib/core/sink-bin.c index 425e89762..4b6543454 100644 --- a/src/lib/core/sink-bin.c +++ b/src/lib/core/sink-bin.c @@ -641,6 +641,7 @@ bt_sink_bin_get_recorder_elements (const BtSinkBin * const self) if ((element = bt_sink_bin_make_and_configure_encodebin (profile))) { list = g_list_append (list, element); } + g_object_unref (profile); } else { GST_DEBUG ("no profile, do raw recording"); // encodebin starts with a queue already @@ -1053,6 +1054,7 @@ bt_sink_bin_is_record_format_supported (BtSinkBinRecordFormat format) } else { format_states[format] = RECORD_FORMAT_STATE_MISSES_ELEMENTS; } + g_object_unref (profile); } return format_states[format] > RECORD_FORMAT_STATE_NOT_CHECKED; } diff --git a/src/ui/edit/machine-canvas-item.c b/src/ui/edit/machine-canvas-item.c index 82ab9b3f9..f0a26e938 100644 --- a/src/ui/edit/machine-canvas-item.c +++ b/src/ui/edit/machine-canvas-item.c @@ -1210,13 +1210,15 @@ bt_machine_canvas_item_set_property (GObject * object, guint property_id, BT_MAIN_PAGE_MACHINES (g_value_get_object (value)); g_object_try_weak_ref (self->priv->main_page_machines); break; - case MACHINE_CANVAS_ITEM_MACHINE: - g_object_try_unref (self->priv->machine); - self->priv->machine = BT_MACHINE (g_value_dup_object (value)); - if (self->priv->machine) { + case MACHINE_CANVAS_ITEM_MACHINE:{ + BtMachine *new_machine = (BtMachine *) g_value_get_object (value); + if (new_machine != self->priv->machine) { GstElement *element; GstBin *bin; + g_object_try_unref (self->priv->machine); + self->priv->machine = g_object_ref (new_machine); + GST_INFO ("set the machine %" G_OBJECT_REF_COUNT_FMT, G_OBJECT_LOG_REF_COUNT (self->priv->machine)); g_object_set_qdata ((GObject *) self->priv->machine, @@ -1245,6 +1247,7 @@ bt_machine_canvas_item_set_property (GObject * object, guint property_id, if (!BT_IS_SINK_MACHINE (self->priv->machine)) { if (bt_machine_enable_output_post_level (self->priv->machine)) { + g_object_try_weak_unref (self->priv->output_level); g_object_get (self->priv->machine, "output-post-level", &self->priv->output_level, NULL); g_object_try_weak_ref (self->priv->output_level); @@ -1255,6 +1258,7 @@ bt_machine_canvas_item_set_property (GObject * object, guint property_id, } if (!BT_IS_SOURCE_MACHINE (self->priv->machine)) { if (bt_machine_enable_input_pre_level (self->priv->machine)) { + g_object_try_weak_unref (self->priv->input_level); g_object_get (self->priv->machine, "input-pre-level", &self->priv->input_level, NULL); g_object_try_weak_ref (self->priv->input_level); @@ -1265,6 +1269,7 @@ bt_machine_canvas_item_set_property (GObject * object, guint property_id, } } break; + } case MACHINE_CANVAS_ITEM_ZOOM: self->priv->zoom = g_value_get_double (value); GST_DEBUG ("set the zoom for machine_canvas_item: %f", self->priv->zoom);