[0.6.48][uri type : mem] use heap instead of tbm 06/130306/2 accepted/tizen/unified/20170522.184610 submit/tizen/20170522.021730 tizen_4.0.m1_release
authorEunhae Choi <eunhae1.choi@samsung.com>
Mon, 22 May 2017 01:34:12 +0000 (10:34 +0900)
committerEunhae Choi <eunhae1.choi@samsung.com>
Mon, 22 May 2017 01:46:14 +0000 (10:46 +0900)
Change-Id: I0e94065ef62b4303695345c1925295e992c01a00

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

index 717f7420ca6330776b9cabc8d35dc9f5f30188fc..5e01b4313fa58d1fd1cec49fbd3403b8a84eda3a 100644 (file)
@@ -1,6 +1,6 @@
 Name:       libmm-player
 Summary:    Multimedia Framework Player Library
-Version:    0.6.47
+Version:    0.6.48
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0
index 39d096f0b5517af283c3bdc0779480710fcfc709..80809a7f3bd2f99b1d26b915482a8ed45477a2d6 100644 (file)
@@ -7999,8 +7999,18 @@ static int __mmfplayer_parse_profile(const char *uri, void *param, MMPlayerParse
 
                        LOGD("ext: %s, mem_size: %d, mmap(param): %p\n", ext, mem_size, param);
                        if (mem_size && param) {
-                               data->mem = param;
-                               data->mem_size = mem_size;
+                               if (data->mem)
+                                       free(data->mem);
+
+                               data->mem = malloc(mem_size);
+
+                               if (data->mem) {
+                                       memcpy(data->mem, param, mem_size);
+                                       data->mem_size = mem_size;
+                               } else {
+                                       LOGE("failed to alloc mem %d", mem_size);
+                               }
+
                                data->uri_type = MM_PLAYER_URI_TYPE_MEM;
                                ret = MM_ERROR_NONE;
                        }
@@ -8971,7 +8981,7 @@ _mmplayer_realize(MMHandleType hplayer) // @
                }
        }
 
-       /* FIXIT : we can use thouse in player->profile directly */
+       /* profile.mem or mem_buf.buf have to be free when player is destroyed */
        if (player->profile.uri_type == MM_PLAYER_URI_TYPE_MEM) {
                player->mem_buf.buf = (char *)player->profile.mem;
                player->mem_buf.len = player->profile.mem_size;
@@ -12315,6 +12325,11 @@ __mmplayer_release_misc_post(mm_player_t* player)
        __mmplayer_video_stream_destroy_bo_list(player);
        __mmplayer_initialize_storage_info(player, MMPLAYER_PATH_MAX);
 
+       if (player->profile.mem) {
+               free(player->profile.mem);
+               player->profile.mem = NULL;
+               player->mem_buf.buf = NULL;
+       }
        player->uri_info.uri_idx = 0;
        MMPLAYER_FLEAVE();
 }