[0.2.127] fix mem leak 47/235147/1
authorEunhye Choi <eunhae1.choi@samsung.com>
Tue, 2 Jun 2020 07:50:50 +0000 (16:50 +0900)
committerEunhye Choi <eunhae1.choi@samsung.com>
Tue, 2 Jun 2020 07:51:01 +0000 (16:51 +0900)
- release muse player handle resource in case of shutdown

Change-Id: I5bf72003c521d39d40b6d22c6a845676a13fc96c

muse/include/muse_player_private.h
muse/src/muse_player.c
muse/src/muse_player_dispatcher.c
packaging/mmsvc-player.spec

index e43fe7d..a726f85 100644 (file)
@@ -61,6 +61,10 @@ typedef struct {
        muse_module_h module;
 } prepare_data_t;
 
+void _mplayer_remove_export_media_packet(muse_module_h module);
+bool _mplayer_remove_export_data(muse_module_h module, int key, bool remove_all);
+
+
 #ifdef __cplusplus
 }
 #endif
index 02d4215..88b3aad 100644 (file)
@@ -154,7 +154,7 @@ ERROR:
        return false;
 }
 
-static bool __mplayer_remove_export_data(muse_module_h module, int key, bool remove_all)
+bool _mplayer_remove_export_data(muse_module_h module, int key, bool remove_all)
 {
        bool ret = true;
        muse_player_handle_t *muse_player = NULL;
@@ -277,8 +277,7 @@ EXIT:
        return;
 }
 
-
-static void __mplayer_remove_export_media_packet(muse_module_h module)
+void _mplayer_remove_export_media_packet(muse_module_h module)
 {
        muse_player_handle_t *muse_player = NULL;
 
@@ -1199,7 +1198,7 @@ int player_disp_destroy(muse_module_h module)
        muse_player = (muse_player_handle_t *)muse_server_ipc_get_handle(module);
 
        /* decoder buffer need to be released first to destroy pipeline */
-       __mplayer_remove_export_media_packet(module);
+       _mplayer_remove_export_media_packet(module);
 
        ret = legacy_player_destroy(muse_player->player_handle);
 
@@ -1212,7 +1211,7 @@ int player_disp_destroy(muse_module_h module)
                muse_player->video_format = NULL;
        }
 
-       __mplayer_remove_export_data(module, 0, true);
+       _mplayer_remove_export_data(module, 0, true);
        g_mutex_clear(&muse_player->list_lock);
 
        muse_player->bufmgr = NULL;
@@ -1298,7 +1297,7 @@ int player_disp_unprepare(muse_module_h module)
        unset_cb = !muse_player->export_video_data;
 
        /* decoder buffer need to be released first to destroy pipeline */
-       __mplayer_remove_export_media_packet(module);
+       _mplayer_remove_export_media_packet(module);
 
        ret = legacy_player_unprepare(muse_player->player_handle);
 
@@ -1310,7 +1309,7 @@ int player_disp_unprepare(muse_module_h module)
        if (!muse_player->export_audio_data)
                legacy_player_unset_callback(muse_player->player_handle, MUSE_PLAYER_EVENT_TYPE_MEDIA_PACKET_AUDIO_FRAME);
 
-       __mplayer_remove_export_data(module, 0, true);
+       _mplayer_remove_export_data(module, 0, true);
 
        PLAYER_RETURN_MSG(api, ret, module);
 
@@ -2819,7 +2818,7 @@ int player_disp_return_buffer(muse_module_h module)       /* MUSE_PLAYER_API_RETURN_BU
 
        /* LOGD("handle : %p, key : %d", muse_player, key); */
 
-       if (!__mplayer_remove_export_data(module, key, false))
+       if (!_mplayer_remove_export_data(module, key, false))
                LOGE("failed to remove export data : key %d", key);
 
        /* This funct does not send return value to client.        *
index 712fb59..7bdc58b 100644 (file)
@@ -49,7 +49,22 @@ static int player_cmd_shutdown(muse_module_h module)
                legacy_player_unprepare(muse_player->player_handle);
                /* FALLTHROUGH */
        case PLAYER_STATE_IDLE:
+               _mplayer_remove_export_media_packet(module);
                legacy_player_destroy(muse_player->player_handle);
+
+               if (muse_player->audio_format) {
+                       media_format_unref(muse_player->audio_format);
+                       muse_player->audio_format = NULL;
+               }
+               if (muse_player->video_format) {
+                       media_format_unref(muse_player->video_format);
+                       muse_player->video_format = NULL;
+               }
+               _mplayer_remove_export_data(module, 0, true);
+               g_mutex_clear(&muse_player->list_lock);
+               muse_player->bufmgr = NULL;
+               g_free(muse_player);
+               muse_player = NULL;
                break;
 
        default:
index fc69b85..5f76405 100644 (file)
@@ -1,6 +1,6 @@
 Name:       mmsvc-player
 Summary:    A Media Player module for muse server
-Version:    0.2.126
+Version:    0.2.127
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0