fix memory leak 09/112709/2 accepted/tizen/common/20170206.124351 accepted/tizen/common/20170210.170628 accepted/tizen/ivi/20170214.010744 accepted/tizen/mobile/20170214.010527 accepted/tizen/tv/20170214.010627 accepted/tizen/wearable/20170214.010705 submit/tizen/20170206.043356 submit/tizen/20170210.083202
authorVolodymyr Brynza <v.brynza@samsung.com>
Thu, 2 Feb 2017 11:26:20 +0000 (13:26 +0200)
committerVolodymyr Brynza <v.brynza@samsung.com>
Thu, 2 Feb 2017 11:26:20 +0000 (13:26 +0200)
Change-Id: I4687b9f4949ecaac16e44bdd210a5ed4d1964b6a
Signed-off-by: Volodymyr Brynza <v.brynza@samsung.com>
packaging/capi-media-streamer.spec
src/media_streamer_gst.c
src/media_streamer_node.c
src/media_streamer_node_resources.c

index 89c0c35b68620358fa1c138b43198fafdb67200a..646ff935beffe4f6d9866e4822068af244be741b 100644 (file)
@@ -1,6 +1,6 @@
 Name:       capi-media-streamer
 Summary:    A Media Streamer API
-Version:    0.1.12
+Version:    0.1.13
 Release:    0
 Group:      Multimedia/API
 License:    Apache-2.0
index c59208764d6237e947f936c38b3c31ca435de412..3ac83fccec89ddd1d97c7d117e17b319aa820192 100644 (file)
@@ -1172,6 +1172,7 @@ GstElement *__ms_video_decoder_element_create(node_plug_s *plug_info, media_stre
 GstElement *__ms_audio_encoder_element_create(node_plug_s *plug_info, media_streamer_node_type_e type)
 {
        GstCaps *enc_caps = plug_info->src_caps;
+       gchar *encoder_name = NULL;
        if (!enc_caps) {
                enc_caps = gst_caps_from_string(MEDIA_STREAMER_DEFAULT_AUDIO_FORMAT);
                ms_debug("No Audio encoding format is set! Deafault will be: [%s]", MEDIA_STREAMER_DEFAULT_AUDIO_FORMAT);
@@ -1192,8 +1193,10 @@ GstElement *__ms_audio_encoder_element_create(node_plug_s *plug_info, media_stre
        if (!audio_encoder)
                audio_encoder = __ms_element_create_by_registry(&plug_info_encoder, type);
 
-       if (g_strrstr(gst_element_get_name(audio_encoder), "aac"))
+       encoder_name = gst_element_get_name(audio_encoder);
+       if (encoder_name && g_strrstr(encoder_name, "aac"))
                g_object_set(audio_encoder, "compliance", -2, NULL);
+       MS_SAFE_GFREE(encoder_name);
 
        /* Creating bin - Audio Encoder */
        GstElement *audio_enc_bin = gst_bin_new("audio_encoder");
index ced5323cd09efbca36ce3f523b7ab6b6abbe92a6..0f69deb86ec205d066bdc2de0dac61577069e975 100644 (file)
@@ -657,6 +657,7 @@ int __ms_sink_node_create(media_streamer_node_s *node)
        case MEDIA_STREAMER_NODE_SINK_TYPE_OVERLAY:
                plugin_name = __ms_ini_get_string("node type 2:overlay", DEFAULT_VIDEO_SINK);
                node->gst_element = __ms_element_create(plugin_name, NULL);
+               g_object_set(node->gst_element, "use-tbm", FALSE, NULL);
                break;
        case MEDIA_STREAMER_NODE_SINK_TYPE_FAKE:
                plugin_name = __ms_ini_get_string("node type 2:fake", DEFAULT_FAKE_SINK);
@@ -1567,16 +1568,20 @@ gboolean _ms_node_resouces_acquire_iter(const GValue *item, GValue *ret, gpointe
                        then apprently this element doesn't require resources */
                ms_info("Failed to found corresonding node [%s] inside streamer", GST_ELEMENT_NAME(element));
                g_value_set_boolean(ret, TRUE);
+               g_object_unref(element);
                return TRUE;
        }
 
        if (MEDIA_STREAMER_ERROR_NONE != _ms_node_resource_aquire(node)) {
                ms_error("Failed to acquire resource for node [%s]", node->name);
+               g_object_unref(element);
                return FALSE;
        }
 
        g_value_set_boolean(ret, TRUE);
 
+       g_object_unref(element);
+
        return TRUE;
 }
 
@@ -1597,16 +1602,20 @@ gboolean _ms_node_resouces_release_iter(const GValue *item, GValue *ret, gpointe
                        then apprently this element doesn't require resources. */
                ms_debug("Failed to found corresonding node [%s] inside streamer", GST_ELEMENT_NAME(element));
                g_value_set_boolean(ret, TRUE);
+               g_object_unref(element);
                return TRUE;
        }
 
        if (MEDIA_STREAMER_ERROR_NONE != _ms_node_resource_release(node)) {
                ms_error("Failed to release resource for node [%s]", node->name);
+               g_object_unref(element);
                return FALSE;
        }
 
        g_value_set_boolean(ret, TRUE);
 
+       g_object_unref(element);
+
        return TRUE;
 }
 
@@ -1627,15 +1636,19 @@ gboolean _ms_node_policy_check_iter(const GValue *item, GValue *ret, gpointer us
                        then apprently this element doesn't require resources */
                ms_info("Failed to found corresonding node [%s] inside streamer", GST_ELEMENT_NAME(element));
                g_value_set_boolean(ret, TRUE);
+               g_object_unref(element);
                return TRUE;
        }
 
        if (MEDIA_STREAMER_ERROR_NONE != _ms_node_policy_check(node)) {
                ms_error("Failed to check policy for node [%s]", node->name);
+               g_object_unref(element);
                return FALSE;
        }
 
        g_value_set_boolean(ret, TRUE);
 
+       g_object_unref(element);
+
        return TRUE;
 }
index 2f69001dfe54a4a18fc27291be0fbd256af9d3b2..dbf8c54b385fbd0f5394d4e9e5fd64d9e33e12b7 100644 (file)
@@ -74,6 +74,12 @@ static gboolean __ms_node_resources_is_needed_by_platform(media_streamer_node_s
           are platform dependent */
        system_info_get_platform_string("http://tizen.org/system/model_name", &model_name);
        system_info_get_platform_string("http://tizen.org/system/platform.processor", &platform_processor);
+       if (!model_name || ! platform_processor) {
+               ms_error("Failed to get information about platform check resources");
+               MS_SAFE_FREE(model_name);
+               MS_SAFE_FREE(platform_processor);
+               return TRUE;
+       }
        ms_info("Check for resources for model_name %s, platform.processor %s", model_name, platform_processor);
 
        switch (type) {
@@ -97,6 +103,9 @@ static gboolean __ms_node_resources_is_needed_by_platform(media_streamer_node_s
                break;
        }
 
+       MS_SAFE_FREE(model_name);
+       MS_SAFE_FREE(platform_processor);
+
        return ret;
 }