diff --git a/ChangeLog b/ChangeLog index e924e62238..51d00dadae 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-11-08 Julien MOUTTE + + * sys/ximage/ximagesink.c: (gst_ximagesink_xcontext_clear), + (gst_ximagesink_finalize): + * sys/xvimage/xvimagesink.c: (gst_xvimagesink_xcontext_clear), + (gst_xvimagesink_finalize): Some more cleanups, leaks fixed and checks. + 2004-11-08 Wim Taymans * gst/typefind/gsttypefindfunctions.c: (aac_type_find): diff --git a/sys/ximage/ximagesink.c b/sys/ximage/ximagesink.c index 1766be1f86..5fbd7fffd8 100644 --- a/sys/ximage/ximagesink.c +++ b/sys/ximage/ximagesink.c @@ -856,6 +856,7 @@ static void gst_ximagesink_xcontext_clear (GstXImageSink * ximagesink) { g_return_if_fail (GST_IS_XIMAGESINK (ximagesink)); + g_return_if_fail (ximagesink->xcontext != NULL); gst_caps_free (ximagesink->xcontext->caps); g_free (ximagesink->xcontext->par); @@ -868,6 +869,7 @@ gst_ximagesink_xcontext_clear (GstXImageSink * ximagesink) g_mutex_unlock (ximagesink->x_lock); + g_free (ximagesink->xcontext); ximagesink->xcontext = NULL; } @@ -1506,8 +1508,18 @@ gst_ximagesink_finalize (GObject * object) ximagesink->display_name = NULL; } - g_mutex_free (ximagesink->x_lock); - g_mutex_free (ximagesink->pool_lock); + if (ximagesink->par) { + g_free (ximagesink->par); + ximagesink->par = NULL; + } + if (ximagesink->x_lock) { + g_mutex_free (ximagesink->x_lock); + ximagesink->x_lock = NULL; + } + if (ximagesink->pool_lock) { + g_mutex_free (ximagesink->pool_lock); + ximagesink->pool_lock = NULL; + } G_OBJECT_CLASS (parent_class)->finalize (object); } diff --git a/sys/xvimage/xvimagesink.c b/sys/xvimage/xvimagesink.c index 71ad6a9de7..d8b71f81a6 100644 --- a/sys/xvimage/xvimagesink.c +++ b/sys/xvimage/xvimagesink.c @@ -1054,6 +1054,7 @@ gst_xvimagesink_xcontext_clear (GstXvImageSink * xvimagesink) GList *formats_list, *channels_list; g_return_if_fail (GST_IS_XVIMAGESINK (xvimagesink)); + g_return_if_fail (xvimagesink->xcontext != NULL); formats_list = xvimagesink->xcontext->formats_list; @@ -1890,9 +1891,18 @@ gst_xvimagesink_finalize (GObject * object) xvimagesink->display_name = NULL; } - g_free (xvimagesink->par); - g_mutex_free (xvimagesink->x_lock); - g_mutex_free (xvimagesink->pool_lock); + if (xvimagesink->par) { + g_free (xvimagesink->par); + xvimagesink->par = NULL; + } + if (xvimagesink->x_lock) { + g_mutex_free (xvimagesink->x_lock); + xvimagesink->x_lock = NULL; + } + if (xvimagesink->pool_lock) { + g_mutex_free (xvimagesink->pool_lock); + xvimagesink->pool_lock = NULL; + } G_OBJECT_CLASS (parent_class)->finalize (object); }