From 90f8e33cc8f0fc6e29d92c6db96ad02cd6087e44 Mon Sep 17 00:00:00 2001 From: Seungha Yang Date: Wed, 29 Jan 2020 14:02:09 +0900 Subject: msdk: Clear reference counted object in dispose() method Follow GObject's memory management model --- sys/msdk/gstmsdkdec.c | 12 +++++++++++- sys/msdk/gstmsdkenc.c | 7 +++---- sys/msdk/gstmsdkvpp.c | 6 +++--- 3 files changed, 17 insertions(+), 8 deletions(-) (limited to 'sys') diff --git a/sys/msdk/gstmsdkdec.c b/sys/msdk/gstmsdkdec.c index e71361fe7..86f829589 100644 --- a/sys/msdk/gstmsdkdec.c +++ b/sys/msdk/gstmsdkdec.c @@ -1482,6 +1482,16 @@ gst_msdkdec_get_property (GObject * object, guint prop_id, GValue * value, GST_OBJECT_UNLOCK (thiz); } +static void +gst_msdkdec_dispose (GObject * object) +{ + GstMsdkDec *thiz = GST_MSDKDEC (object); + + g_clear_object (&thiz->adapter); + + G_OBJECT_CLASS (parent_class)->dispose (object); +} + static void gst_msdkdec_finalize (GObject * object) { @@ -1489,7 +1499,6 @@ gst_msdkdec_finalize (GObject * object) g_array_unref (thiz->tasks); thiz->tasks = NULL; - g_clear_object (&thiz->adapter); G_OBJECT_CLASS (parent_class)->finalize (object); } @@ -1529,6 +1538,7 @@ gst_msdkdec_class_init (GstMsdkDecClass * klass) gobject_class->set_property = gst_msdkdec_set_property; gobject_class->get_property = gst_msdkdec_get_property; + gobject_class->dispose = gst_msdkdec_dispose; gobject_class->finalize = gst_msdkdec_finalize; element_class->set_context = gst_msdkdec_set_context; diff --git a/sys/msdk/gstmsdkenc.c b/sys/msdk/gstmsdkenc.c index f11c43e2e..7a818a8d7 100644 --- a/sys/msdk/gstmsdkenc.c +++ b/sys/msdk/gstmsdkenc.c @@ -1573,9 +1573,8 @@ gst_msdkenc_propose_allocation (GstVideoEncoder * encoder, GstQuery * query) query); } - static void -gst_msdkenc_finalize (GObject * object) +gst_msdkenc_dispose (GObject * object) { GstMsdkEnc *thiz = GST_MSDKENC (object); @@ -1587,7 +1586,7 @@ gst_msdkenc_finalize (GObject * object) gst_clear_object (&thiz->msdk_converted_pool); gst_clear_object (&thiz->old_context); - G_OBJECT_CLASS (parent_class)->finalize (object); + G_OBJECT_CLASS (parent_class)->dispose (object); } static void @@ -1601,7 +1600,7 @@ gst_msdkenc_class_init (GstMsdkEncClass * klass) element_class = GST_ELEMENT_CLASS (klass); gstencoder_class = GST_VIDEO_ENCODER_CLASS (klass); - gobject_class->finalize = gst_msdkenc_finalize; + gobject_class->dispose = gst_msdkenc_dispose; element_class->set_context = gst_msdkenc_set_context; diff --git a/sys/msdk/gstmsdkvpp.c b/sys/msdk/gstmsdkvpp.c index bf5430973..442e16744 100644 --- a/sys/msdk/gstmsdkvpp.c +++ b/sys/msdk/gstmsdkvpp.c @@ -1368,13 +1368,13 @@ gst_msdkvpp_get_property (GObject * object, guint prop_id, } static void -gst_msdkvpp_finalize (GObject * object) +gst_msdkvpp_dispose (GObject * object) { GstMsdkVPP *thiz = GST_MSDKVPP (object); gst_clear_object (&thiz->old_context); - G_OBJECT_CLASS (parent_class)->finalize (object); + G_OBJECT_CLASS (parent_class)->dispose (object); } static void @@ -1406,7 +1406,7 @@ gst_msdkvpp_class_init (GstMsdkVPPClass * klass) gobject_class->set_property = gst_msdkvpp_set_property; gobject_class->get_property = gst_msdkvpp_get_property; - gobject_class->finalize = gst_msdkvpp_finalize; + gobject_class->dispose = gst_msdkvpp_dispose; element_class->set_context = gst_msdkvpp_set_context; -- cgit v1.2.1