From: Gilbok Lee Date: Thu, 7 Mar 2019 07:25:34 +0000 (+0900) Subject: [0.6.174] Fix memory leak X-Git-Tag: accepted/tizen/unified/20190327.025128~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0e6f7a6abd4e2898fbe625357b3e44667aaac2fc;p=platform%2Fcore%2Fmultimedia%2Flibmm-player.git [0.6.174] Fix memory leak Change-Id: I492b2d29687ec2acfdd199397494e6b7186bb40f --- diff --git a/packaging/libmm-player.spec b/packaging/libmm-player.spec index bef7041..88a191d 100644 --- a/packaging/libmm-player.spec +++ b/packaging/libmm-player.spec @@ -1,6 +1,6 @@ Name: libmm-player Summary: Multimedia Framework Player Library -Version: 0.6.173 +Version: 0.6.174 Release: 0 Group: Multimedia/Libraries License: Apache-2.0 diff --git a/src/mm_player_gst.c b/src/mm_player_gst.c index 1a62f14..285c6df 100644 --- a/src/mm_player_gst.c +++ b/src/mm_player_gst.c @@ -2476,7 +2476,7 @@ __mmplayer_gst_create_es_path(mm_player_t *player, MMPlayerStreamType type, GstC } if (type == MM_PLAYER_STREAM_TYPE_TEXT) { - __mmplayer_gst_create_decoder(player, gst_element_get_static_pad(mainbin[queue_id].gst, "src"), caps); + __mmplayer_gst_create_decoder(player, srcpad, caps); } else { if (!__mmplayer_gst_create_es_decoder(player, type, srcpad)) { LOGE("failed to create decoder"); diff --git a/src/mm_player_priv.c b/src/mm_player_priv.c index a4efccb..54ddf61 100644 --- a/src/mm_player_priv.c +++ b/src/mm_player_priv.c @@ -1059,6 +1059,8 @@ __mmplayer_gst_make_selector(mm_player_t *player, enum MainElementID elem_idx, M pipeline = player->pipeline->mainbin[MMPLAYER_M_PIPE].gst; gst_bin_add(GST_BIN(pipeline), selector); + gst_object_unref(GST_OBJECT(srcpad)); + MMPLAYER_FLEAVE(); return selector; } @@ -5792,10 +5794,8 @@ __mmplayer_typefind_have_type(GstElement *tf, guint probability, if (async && player->msg_posted == FALSE) __mmplayer_handle_missed_plugin(player); - goto DONE; } -DONE: gst_object_unref(GST_OBJECT(pad)); MMPLAYER_FLEAVE(); @@ -5981,6 +5981,8 @@ __mmplayer_gst_create_decoder(mm_player_t *player, GstPad *srcpad, const GstCaps gst_object_unref(GST_OBJECT(sinkpad)); sinkpad = NULL; + gst_object_unref(GST_OBJECT(qsrcpad)); + qsrcpad = NULL; mainbin[MMPLAYER_M_AUTOPLUG].id = MMPLAYER_M_AUTOPLUG; mainbin[MMPLAYER_M_AUTOPLUG].gst = decodebin; @@ -6020,6 +6022,9 @@ ERROR: if (sinkpad) gst_object_unref(GST_OBJECT(sinkpad)); + if (qsrcpad) + gst_object_unref(GST_OBJECT(qsrcpad)); + if (queue2) { /* NOTE : Trying to dispose element queue0, but it is in READY instead of the NULL state. * You need to explicitly set elements to the NULL state before @@ -8220,6 +8225,7 @@ __mmplayer_release_dump_list(GList *dump_list) if (dump_s->dump_pad) { if (dump_s->probe_handle_id) gst_pad_remove_probe(dump_s->dump_pad, dump_s->probe_handle_id); + gst_object_unref(GST_OBJECT(dump_s->dump_pad)); } if (dump_s->dump_element_file) { fclose(dump_s->dump_element_file);