[0.6.174] Fix memory leak 99/201099/4
authorGilbok Lee <gilbok.lee@samsung.com>
Thu, 7 Mar 2019 07:25:34 +0000 (16:25 +0900)
committerGilbok Lee <gilbok.lee@samsung.com>
Tue, 19 Mar 2019 07:04:49 +0000 (16:04 +0900)
Change-Id: I492b2d29687ec2acfdd199397494e6b7186bb40f

packaging/libmm-player.spec
src/mm_player_gst.c
src/mm_player_priv.c

index bef7041..88a191d 100644 (file)
@@ -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
index 1a62f14..285c6df 100644 (file)
@@ -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");
index a4efccb..54ddf61 100644 (file)
@@ -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);