kmssink: fix tmp_kmsmem leaks
authorGuillaume Desmottes <guillaume.desmottes@collabora.com>
Tue, 18 Dec 2018 14:41:09 +0000 (15:41 +0100)
committerGuillaume Desmottes <guillaume.desmottes@collabora.com>
Tue, 18 Dec 2018 14:44:23 +0000 (15:44 +0100)
configure_mode_setting() keeps a ref on tmp_kmsmem which is released in
gst_kms_sink_show_frame().
But if for some reason configure_mode_setting() is re-called before
showing a frame or if none is showed this memory was leaked.

sys/kms/gstkmssink.c

index 5a912e2a77a9a62c3781906149372be1e8be2d39..2dd743981752ec3f7f5539f00c2587acd033e73b 100644 (file)
@@ -461,6 +461,7 @@ configure_mode_setting (GstKMSSink * self, GstVideoInfo * vinfo)
   if (err)
     goto modesetting_failed;
 
+  g_clear_pointer (&self->tmp_kmsmem, gst_memory_unref);
   self->tmp_kmsmem = (GstMemory *) kmsmem;
 
   ret = TRUE;
@@ -1838,6 +1839,7 @@ gst_kms_sink_finalize (GObject * object)
   gst_poll_free (sink->poll);
   g_clear_pointer (&sink->connector_props, gst_structure_free);
   g_clear_pointer (&sink->plane_props, gst_structure_free);
+  g_clear_pointer (&sink->tmp_kmsmem, gst_memory_unref);
 
   G_OBJECT_CLASS (parent_class)->finalize (object);
 }