[0.6.238] Fix memory leak due to without unref source element 72/243572/4 submit/tizen/20200909.015028
authorGilbok Lee <gilbok.lee@samsung.com>
Tue, 8 Sep 2020 08:11:35 +0000 (17:11 +0900)
committerGilbok Lee <gilbok.lee@samsung.com>
Tue, 8 Sep 2020 08:37:58 +0000 (17:37 +0900)
- Create __mmplayer_rtsp_src_setup() for clean code

Change-Id: Ia2295f1e3d58012389f2a8edc8faa0380faa230d

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

index db7128f..2ef3859 100644 (file)
@@ -1,6 +1,6 @@
 Name:       libmm-player
 Summary:    Multimedia Framework Player Library
-Version:    0.6.237
+Version:    0.6.238
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0
index ccc7bbd..906be79 100644 (file)
@@ -2823,7 +2823,7 @@ __mmplayer_gst_make_rtsp_src(mmplayer_t *player)
        return element;
 }
 
-void __mmplayer_http_src_setup(GstElement *source, gpointer data)
+static void __mmplayer_http_src_setup(GstElement *source, gpointer data)
 {
 #define HTTP_SOURCE_BLOCK_SIZE (64 * 1024)
 
@@ -2839,29 +2839,24 @@ void __mmplayer_http_src_setup(GstElement *source, gpointer data)
 
        LOGD("source element %s", GST_ELEMENT_NAME(source));
 
-       /* get profile attribute */
        attrs = MMPLAYER_GET_ATTRS(player);
        if (!attrs) {
                LOGE("failed to get content attribute");
                return;
        }
 
-       /* get attribute */
        mm_attrs_get_string_by_name(attrs, "streaming_cookie", &cookies);
        mm_attrs_get_string_by_name(attrs, "streaming_user_agent", &user_agent);
 
        if (player->ini.http_timeout != DEFAULT_HTTP_TIMEOUT)
                http_timeout = player->ini.http_timeout;
 
-       /* get attribute */
        SECURE_LOGD("cookies : %s", cookies);
        SECURE_LOGD("user_agent :  %s", user_agent);
        LOGD("timeout : %d", http_timeout);
 
-       /* setting property to streaming source */
        g_object_set(G_OBJECT(source), "timeout", http_timeout, "blocksize", (unsigned long)(HTTP_SOURCE_BLOCK_SIZE), NULL);
 
-       /* parsing cookies */
        if ((cookie_list = _mmplayer_get_cookie_list((const char *)cookies))) {
                g_object_set(G_OBJECT(source), "cookies", cookie_list, NULL);
                g_strfreev(cookie_list);
@@ -2874,6 +2869,31 @@ void __mmplayer_http_src_setup(GstElement *source, gpointer data)
        return;
 }
 
+static void __mmplayer_rtsp_src_setup(GstElement *source, gpointer data)
+{
+       mmplayer_t *player = (mmplayer_t *)data;
+       gchar *user_agent = NULL;
+       MMHandleType attrs = 0;
+
+       MMPLAYER_FENTER();
+       MMPLAYER_RETURN_IF_FAIL(player);
+
+       attrs = MMPLAYER_GET_ATTRS(player);
+       if (!attrs) {
+               LOGE("failed to get content attribute");
+               return;
+       }
+
+       mm_attrs_get_string_by_name(attrs, "streaming_user_agent", &user_agent);
+
+       SECURE_LOGD("user_agent : %s", user_agent);
+
+       if (user_agent)
+               g_object_set(G_OBJECT(source), "user-agent", user_agent, NULL);
+
+       MMPLAYER_FLEAVE();
+}
+
 static void
 __mmplayer_gst_found_source(GObject *object, GObject *orig, GParamSpec *pspec, gpointer data)
 {
@@ -2891,16 +2911,7 @@ __mmplayer_gst_found_source(GObject *object, GObject *orig, GParamSpec *pspec, g
        if (MMPLAYER_IS_HTTP_STREAMING(player)) {
                __mmplayer_http_src_setup(source, data);
        } else if (MMPLAYER_IS_RTSP_STREAMING(player)) {
-               gchar *user_agent = NULL;
-
-               /* get attribute */
-               mm_attrs_get_string_by_name(player->attrs, "streaming_user_agent", &user_agent);
-
-               SECURE_LOGD("user_agent : %s", user_agent);
-
-               /* setting property to streaming source */
-               if (user_agent)
-                       g_object_set(G_OBJECT(source), "user-agent", user_agent, NULL);
+               __mmplayer_rtsp_src_setup(source, data);
        } else if (MMPLAYER_IS_SMOOTH_STREAMING(player)) {
                g_object_set(G_OBJECT(source), "timeout", DEFAULT_HTTP_TIMEOUT, NULL);
        } else if (player->profile.uri_type == MM_PLAYER_URI_TYPE_MEM) {
@@ -2908,10 +2919,12 @@ __mmplayer_gst_found_source(GObject *object, GObject *orig, GParamSpec *pspec, g
                        "size", (gint64)player->profile.input_mem.len, "blocksize", 20480, NULL);
 
                _mmplayer_add_signal_connection(player, G_OBJECT(source), MM_PLAYER_SIGNAL_TYPE_OTHERS, "seek-data",
-                                                                               G_CALLBACK(__mmplayer_gst_appsrc_seek_data_mem), (gpointer)&player->profile.input_mem);
+                                               G_CALLBACK(__mmplayer_gst_appsrc_seek_data_mem), (gpointer)&player->profile.input_mem);
                _mmplayer_add_signal_connection(player, G_OBJECT(source), MM_PLAYER_SIGNAL_TYPE_OTHERS, "need-data",
-                                                                               G_CALLBACK(__mmplayer_gst_appsrc_feed_data_mem), (gpointer)&player->profile.input_mem);
+                                               G_CALLBACK(__mmplayer_gst_appsrc_feed_data_mem), (gpointer)&player->profile.input_mem);
        }
+       gst_object_unref (source);
+
        MMPLAYER_FLEAVE();
 }