fix crash of Media plugin
authorYoungjae Shin <yj99.shin@samsung.com>
Thu, 31 Oct 2019 10:50:02 +0000 (19:50 +0900)
committerYoungjae Shin <yj99.shin@samsung.com>
Thu, 19 Mar 2020 04:30:37 +0000 (13:30 +0900)
media/MediaPlayer.cpp
media/MediaPlayer.h

index af0acfb..7f4a4f6 100644 (file)
 MODES_NAMESPACE_USE;
 
 const std::string MediaPlayer::NAME = "player";
+player_h MediaPlayer::player = NULL;
+sound_stream_info_h MediaPlayer::stream_info = NULL;
 
 MediaPlayer::MediaPlayer()
-       : MediaAction(NAME), player(NULL), stream_info(NULL)
+       : MediaAction(NAME)
 {
 }
 
-void MediaPlayer::playerCompletedCb(void *data)
-{
-       RET_IF(NULL == data);
-
-       MediaPlayer *h = (MediaPlayer *)data;
-       h->destroyPlayer();
-}
-
 int MediaPlayer::createPlayer()
 {
        int soundRet = sound_manager_create_stream_information(SOUND_STREAM_TYPE_MEDIA, NULL, NULL, &stream_info);
@@ -58,7 +52,7 @@ int MediaPlayer::createPlayer()
        return MODES_ERROR_NONE;
 }
 
-int MediaPlayer::destroyPlayer()
+void MediaPlayer::destroyPlayer(void *data)
 {
        if (stream_info) {
                sound_manager_destroy_stream_information(stream_info);
@@ -74,8 +68,6 @@ int MediaPlayer::destroyPlayer()
                player_destroy(player);
                player = NULL;
        }
-
-       return MODES_ERROR_NONE;
 }
 
 int MediaPlayer::set(std::string val)
@@ -98,7 +90,7 @@ int MediaPlayer::set(std::string val)
                return MODES_ERROR_SYSTEM;
        }
 
-       ret = player_set_completed_cb(player, playerCompletedCb, this);
+       ret = player_set_completed_cb(player, destroyPlayer, NULL);
        if (PLAYER_ERROR_NONE != ret) {
                ERR("player_set_completed_cb() Fail(%s)", get_error_message(ret));
                return MODES_ERROR_SYSTEM;
@@ -115,5 +107,6 @@ int MediaPlayer::set(std::string val)
 
 int MediaPlayer::undo()
 {
-       return destroyPlayer();
+       destroyPlayer(NULL);
+       return MODES_ERROR_NONE;
 }
index b8ccf62..78f5922 100644 (file)
@@ -32,11 +32,10 @@ public:
        int undo() override;
 private:
        int createPlayer();
-       int destroyPlayer();
-       static void playerCompletedCb(void *data);
+       static void destroyPlayer(void *data);
 
-       player_h player;
-       sound_stream_info_h stream_info;
+       static player_h player;
+       static sound_stream_info_h stream_info;
 };
 
 MODES_NAMESPACE_END