From: aman.jeph Date: Tue, 6 Oct 2020 09:04:54 +0000 (+0530) Subject: [TIZENIOT-1791] [TIZENIOT-2013] fix crash issue in video thumbnail generation X-Git-Tag: submit/tizen/20201008.085909~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3d1a6e02bb6722e2fc1e4dd6c4d8e0c35f9627cc;p=profile%2Fiot%2Fapps%2Fnative%2Fvideo-player.git [TIZENIOT-1791] [TIZENIOT-2013] fix crash issue in video thumbnail generation Change-Id: Ief91645d25e869ceaa988854a7e6fe5d0da2d6e2 Signed-off-by: aman.jeph --- diff --git a/include/common/mp-util-media-service.h b/include/common/mp-util-media-service.h index 7a7d65c..eda07a1 100755 --- a/include/common/mp-util-media-service.h +++ b/include/common/mp-util-media-service.h @@ -163,8 +163,6 @@ bool mp_util_svc_is_device_storage(const int nVideoItemIndex); //used for check videoid and folderid bool mp_util_svc_check_valid_media_id(char *pMediaId, int style, int *nMediaIndex); - -void mp_util_svc_update_video_item(char *mediaUrl, int nVideoItemIndex); void mp_util_svc_generate_thumbnai(int nVideoItemIndex); void mp_util_svc_extract_video_url_by_item_type(void *list); diff --git a/playview/src/feature/vp-subtitle.c b/playview/src/feature/vp-subtitle.c index 22781f1..06892d4 100755 --- a/playview/src/feature/vp-subtitle.c +++ b/playview/src/feature/vp-subtitle.c @@ -397,8 +397,7 @@ static Evas_Object* _vp_subtitle_create_title_content(Evas_Object* parent, Subti free(res_path); Evas_Object *layout = elm_layout_add(parent); - Eina_Bool ret = elm_layout_file_set(layout, path, VP_PLAY_NAVIFRAME_TITLE_CONTENT); - VideoLogInfo("Layout File Set: %s", ret?"Successful": "Failed"); + elm_layout_file_set(layout, path, VP_PLAY_NAVIFRAME_TITLE_CONTENT); elm_object_part_text_set(layout, "cancel_text", VP_PLAY_STRING_SUBTITLE_CANCEL); elm_object_part_text_set(layout, "done_text", VP_PLAY_STRING_SUBTITLE_DONE); diff --git a/src/common/mp-util-media-service.c b/src/common/mp-util-media-service.c index 79e9bc8..e9e1ac9 100755 --- a/src/common/mp-util-media-service.c +++ b/src/common/mp-util-media-service.c @@ -120,10 +120,7 @@ static bool mp_util_svc_iterate_for_get_video_item_cb(media_info_h media_info_h *pAssignFolderItem = (media_info_h *) pUserData; if (pVideoItem != NULL) { - char *szTmpStr = NULL; media_info_clone(pAssignFolderItem, pVideoItem); - media_info_get_display_name(*pAssignFolderItem, &szTmpStr); - MP_FREE_STRING(szTmpStr); } return FALSE; @@ -706,9 +703,12 @@ char *mp_util_get_folder_thumbnail(int nVideoFolderIndex, int nSortType) } if (pVideoItem) { + int ret = media_info_generate_thumbnail(pVideoItem); + if( ret != MEDIA_CONTENT_ERROR_NONE) { + VideoLogError("Failed to generate thumbnail: [Error Code: %d]", ret); + } media_info_get_thumbnail_path(pVideoItem, &szThumbnailPath); - VideoSecureLogInfo("Video thumbnail file path : %s", - szThumbnailPath); + VideoSecureLogInfo("Video thumbnail file path : %s", szThumbnailPath); media_info_destroy(pVideoItem); } @@ -1295,8 +1295,7 @@ char *mp_util_svc_get_video_url(const int nVideoItemIndex) if (pVideoItem) { media_info_get_file_path(pVideoItem, &szVideoItemFilePath); - VideoSecureLogInfo("szVideoItemFilePath : %s", - szVideoItemFilePath); + VideoSecureLogInfo("szVideoItemFilePath : %s", szVideoItemFilePath); } return szVideoItemFilePath; @@ -1310,29 +1309,27 @@ char *mp_util_svc_get_video_url(const int nVideoItemIndex) char *mp_util_svc_get_video_thumbnail(const int nVideoItemIndex) { if (!VideoItemList) { - VideoLogError("Not exist video item list handle."); + VideoLogError("Videolist is null"); return NULL; } - if (nVideoItemIndex < 0 - || nVideoItemIndex >= - mp_util_svc_get_video_list_size_for_checking_index()) { - VideoLogError("Error number of list item."); + if (nVideoItemIndex < 0 || nVideoItemIndex >= mp_util_svc_get_video_list_size_for_checking_index()) { + VideoLogError("Index is invalid: [index: %d]", nVideoItemIndex); return NULL; } char *szVideoItemThumbnailPath = NULL; - media_info_h pVideoItem = - (media_info_h) eina_list_nth(VideoItemList, nVideoItemIndex); + media_info_h pVideoItem = (media_info_h) eina_list_nth(VideoItemList, nVideoItemIndex); if (pVideoItem) { - media_info_get_thumbnail_path(pVideoItem, - &szVideoItemThumbnailPath); + // this will only create thumbnail , when it is not created already + int ret = media_info_generate_thumbnail(pVideoItem); + if(ret != MEDIA_CONTENT_ERROR_NONE) { + VideoLogError("Failed to generate thumbanil: [Error Code: %d]", ret); + } + media_info_get_thumbnail_path(pVideoItem, &szVideoItemThumbnailPath); } - - VideoSecureLogInfo("pThumbIconUri = %s", szVideoItemThumbnailPath); - return szVideoItemThumbnailPath; } @@ -1827,7 +1824,7 @@ void mp_util_svc_generate_thumbnai(int nVideoItemIndex) media_info_h pVideoItem = (media_info_h) eina_list_nth(VideoItemList, nVideoItemIndex); if ( media_info_generate_thumbnail(pVideoItem) != MEDIA_CONTENT_ERROR_NONE) { - VideoLogWarning("media_info_generate_thumbnail Failed"); + VideoLogWarning("media_info_generate_thumbnail failed"); } } @@ -1855,13 +1852,28 @@ void mp_util_svc_register_thumbnail_update_func(int nVideoItemIndex, return; } - media_info_h pVideoItem = - (media_info_h) eina_list_nth(VideoItemList, nVideoItemIndex); + media_info_h pVideoItem = (media_info_h) eina_list_nth(VideoItemList, nVideoItemIndex); - if (media_info_create_thumbnail + /// callback of media_info_create_thumbnail cause crash in application so + /// we have update this with sync thumbnail generation function "media_info_generate_thumbnail" + /// "media_info_create_thumbnail" is a marked deprecated function in tizen 5.0. + /// this function is not used in any active part of application now. + /*if (media_info_create_thumbnail (pVideoItem, pUserCallbackFunc, pUserData) != MEDIA_CONTENT_ERROR_NONE) { VideoLogWarning("media_info_create_thumbnail is Fail"); + }*/ + + int ret = media_info_generate_thumbnail(pVideoItem); + if(ret != MEDIA_CONTENT_ERROR_NONE) { + VideoLogError("Failed to generate thumbnail"); + } + media_thumbnail_completed_cb completed_cb = (media_thumbnail_completed_cb)pUserCallbackFunc; + if(completed_cb) { + char *path = NULL; + media_info_get_thumbnail_path(pVideoItem, &path); + completed_cb(ret, path, pUserData); + MP_FREE_STRING(path); } } @@ -1894,110 +1906,6 @@ void mp_util_svc_cancel_thumbnail_update(int nVideoItemIndex) } } -void mp_util_svc_update_video_item(char *mediaUrl, int nVideoItemIndex) -{ - if (!VideoItemList) { - VideoLogError("Not exist video item list handle."); - return; - } - - char *szMediaUri = strdup(mediaUrl); - - if (!szMediaUri) { - VideoLogError("No exist video path."); - return; - } - - VideoSecureLogInfo("szMediaUri : %s", szMediaUri); - - media_info_h pUpdatedVideoItem = NULL; - filter_h m_FilterHandle = NULL; - char szTmpStr[STR_LEN_MAX] = { 0, }; - - if (media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) { - VideoLogInfo("Fail to create media filter handle."); - return; - } - - memset(szTmpStr, 0, STR_LEN_MAX); - snprintf(szTmpStr, STR_LEN_MAX, - "MEDIA_TYPE = 1 AND (MEDIA_STORAGE_TYPE=0 OR MEDIA_STORAGE_TYPE=1 OR MEDIA_STORAGE_TYPE=2 OR MEDIA_STORAGE_TYPE=101 OR MEDIA_STORAGE_TYPE=121) AND MEDIA_PATH = \"%s\"", - szMediaUri); - if (media_filter_set_condition - (m_FilterHandle, szTmpStr, - MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE) { - VideoLogError("Fail to set filter condition."); - media_filter_destroy(m_FilterHandle); - if (szMediaUri) { - free(szMediaUri); - szMediaUri = NULL; - } - return; - } - - if (media_info_foreach_media_from_db - (m_FilterHandle, mp_util_svc_iterate_for_get_video_item_cb, - &pUpdatedVideoItem) != MEDIA_CONTENT_ERROR_NONE) { - VideoLogError - ("Fail to get video item list with filter condition."); - media_filter_destroy(m_FilterHandle); - if (szMediaUri) { - free(szMediaUri); - szMediaUri = NULL; - } - return; - } - - if (media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE) { - VideoLogError("Fail to destroy media filter handle."); - if (szMediaUri) { - free(szMediaUri); - szMediaUri = NULL; - } - return; - } - - if (pUpdatedVideoItem) { - char *szTmpStr = NULL; - media_info_get_thumbnail_path(pUpdatedVideoItem, &szTmpStr); - VideoSecureLogDebug("pUpdatedVideoItem - thumbnail path : %s", - szTmpStr); - if (szTmpStr) { - free(szTmpStr); - szTmpStr = NULL; - } - - media_info_get_display_name(pUpdatedVideoItem, &szTmpStr); - VideoSecureLogDebug("pUpdatedVideoItem - title : %s", szTmpStr); - if (szTmpStr) { - free(szTmpStr); - szTmpStr = NULL; - } - - int nCounter = 0; - Eina_List *pCurList = NULL; - media_info_h pTmpVideoItem = NULL; - EINA_LIST_FOREACH(VideoItemList, pCurList, pTmpVideoItem) { - if (nCounter == nVideoItemIndex) { - VideoLogError("nCounter : %d", nCounter); - if (pTmpVideoItem) { - media_info_destroy(pTmpVideoItem); - } - pCurList->data = pUpdatedVideoItem; - break; - } - ++nCounter; - } - } else { - VideoLogError("Fail to get video item from db.."); - } - - if (szMediaUri) { - free(szMediaUri); - szMediaUri = NULL; - } -} - /** * Update thumbnail info to DB * @param nVideoItemIndex : index of the video @@ -2847,8 +2755,7 @@ void mp_util_svc_move_to_db(const int nVideoItemIndex, (media_info_h) eina_list_nth(VideoItemList, nVideoItemIndex); if (pVideoItem) { - if (media_info_move_to_db(pVideoItem, szVideoPath) != - MEDIA_CONTENT_ERROR_NONE) { + if (media_info_move_to_db(pVideoItem, szVideoPath) !=MEDIA_CONTENT_ERROR_NONE) { VideoLogError("Failed move to db"); } } diff --git a/src/view/mp-video-list-remove-view.c b/src/view/mp-video-list-remove-view.c index d74210f..94c8c23 100755 --- a/src/view/mp-video-list-remove-view.c +++ b/src/view/mp-video-list-remove-view.c @@ -971,8 +971,7 @@ static Evas_Object *__mp_remove_view_get_grid_icon_cb(void *pUserData, Evas_Obje elm_object_item_signal_emit(item_data->item, "elm,state,progess,show", "elm"); // Add progess bar Evas_Object *progessbar = elm_layout_add(pObject); - Eina_Bool ret = elm_layout_file_set(progessbar, edj_path, "videolist/progressbar"); - VideoLogInfo("layout file set %s %s",(ret? "Successful": "Failed"), pPart); + elm_layout_file_set(progessbar, edj_path, "videolist/progressbar"); evas_object_size_hint_weight_set(progessbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(progessbar, EVAS_HINT_FILL, EVAS_HINT_FILL); edje_object_part_drag_value_set(elm_layout_edje_get(progessbar), "elm.cur.progressbar", 0.0, 0.0); @@ -1732,8 +1731,7 @@ static Evas_Object* __mp_remove_view_create_title_content(Evas_Object* parent) free(res_path); Evas_Object *layout = elm_layout_add(parent); - Eina_Bool ret = elm_layout_file_set(layout, path, "remove_view/title_content"); - VideoLogInfo("Layout File Set: %s", ret?"Successful": "Failed"); + elm_layout_file_set(layout, path, "remove_view/title_content"); //evas_object_size_hint_min_set(layout, 372, 48); elm_object_domain_part_text_translatable_set(layout, "cancel_text", VIDEOS_STRING, EINA_TRUE); diff --git a/src/view/mp-video-list-share-via-view.c b/src/view/mp-video-list-share-via-view.c index ea753a2..d246feb 100755 --- a/src/view/mp-video-list-share-via-view.c +++ b/src/view/mp-video-list-share-via-view.c @@ -987,8 +987,7 @@ static Evas_Object *__mp_share_view_get_grid_icon_cb(void *pUserData, elm_object_item_signal_emit(item_data->item, "elm,state,progess,show", "elm"); // Add progess bar Evas_Object *progessbar = elm_layout_add(pObject); - Eina_Bool ret = elm_layout_file_set(progessbar, edj_path, "videolist/progressbar"); - VideoLogInfo("layout file set %s %s",(ret? "Successful": "Failed"), pPart); + elm_layout_file_set(progessbar, edj_path, "videolist/progressbar"); evas_object_size_hint_weight_set(progessbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(progessbar, EVAS_HINT_FILL, EVAS_HINT_FILL); edje_object_part_drag_value_set(elm_layout_edje_get(progessbar), "elm.cur.progressbar", 0.0, 0.0); @@ -1489,8 +1488,7 @@ static Evas_Object* __mp_share_view_create_title_content(Evas_Object* parent) free(res_path); Evas_Object *layout = elm_layout_add(parent); - Eina_Bool ret = elm_layout_file_set(layout, path, "remove_view/title_content"); - VideoLogInfo("Layout File Set: %s", ret?"Successful": "Failed"); + elm_layout_file_set(layout, path, "remove_view/title_content"); //evas_object_size_hint_min_set(layout, 372, 48); elm_object_domain_part_text_translatable_set(layout, "cancel_text", VIDEOS_STRING, EINA_TRUE); diff --git a/src/view/mp-video-list-view-folder.c b/src/view/mp-video-list-view-folder.c index 4582296..14ec6b0 100755 --- a/src/view/mp-video-list-view-folder.c +++ b/src/view/mp-video-list-view-folder.c @@ -290,7 +290,6 @@ static Evas_Object *mp_folder_view_get_icon_of_folder_cb(void *pUserData,Evas_Ob evas_object_size_hint_align_set(img, EVAS_HINT_FILL, EVAS_HINT_FILL); item_data->icon = img; - VideoLogInfo("Setting ICON: %p", img); return img; } diff --git a/src/view/mp-video-list-view-item-of-folder.c b/src/view/mp-video-list-view-item-of-folder.c index 63872a3..cea661e 100755 --- a/src/view/mp-video-list-view-item-of-folder.c +++ b/src/view/mp-video-list-view-item-of-folder.c @@ -346,8 +346,7 @@ Evas_Object *__mp_folder_item_view_get_icon_of_video_item_cb(void else if(!strcmp(pPart, "elm.progress")) { Evas_Object *progessbar = elm_layout_add(pObject); - Eina_Bool ret = elm_layout_file_set(progessbar, edj_path, "videolist/progressbar"); - VideoLogInfo("layout file set %s %s",(ret? "Successful": "Failed"), pPart); + elm_layout_file_set(progessbar, edj_path, "videolist/progressbar"); evas_object_size_hint_weight_set(progessbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(progessbar, EVAS_HINT_FILL, EVAS_HINT_FILL); edje_object_part_drag_value_set(elm_layout_edje_get(progessbar), "elm.cur.progressbar", 0.0, 0.0); diff --git a/src/view/mp-video-list-view-thumbnail.c b/src/view/mp-video-list-view-thumbnail.c index 8ebf8a1..ca5b265 100755 --- a/src/view/mp-video-list-view-thumbnail.c +++ b/src/view/mp-video-list-view-thumbnail.c @@ -788,29 +788,6 @@ static void __mp_thumbnail_view_gengrid_realize_cb(void *pUserData, } vp_share_view_update_share_panel(); - stGengridItemData *item_data = elm_object_item_data_get((Elm_Object_Item *) pEventInfo); - int nVideoItemIndex = item_data->videoIndex; - VideoLogInfo("Select nVideoItemIndex: %d", nVideoItemIndex); - - if (nVideoItemIndex < 0 || nVideoItemIndex >= mp_util_svc_get_video_list_size_for_checking_index()) { - VideoSecureLogError("nVideoItemIndex is invalid = %d", nVideoItemIndex); - return; - } - - int nVideoListSize = mp_util_svc_get_number_of_video_item_by_type(); - char *pThumbIconUri = mp_util_svc_get_video_thumbnail(nVideoItemIndex); - VideoSecureLogInfo("pThumbIconUri = %s:%d", pThumbIconUri, nVideoItemIndex); - - if (!pThumbIconUri) { - if (nVideoItemIndex < nVideoListSize - 1) { - mp_util_svc_register_thumbnail_update_func(nVideoItemIndex, __mp_thumbnail_view_update_empty_cb, (void *)item_data); - } else { - mp_util_svc_register_thumbnail_update_func(nVideoItemIndex, (void *)__mp_thumbnail_view_update_cb, (void *)item_data); - } - } else { - free(pThumbIconUri); - pThumbIconUri = NULL; - } } /** @@ -922,8 +899,7 @@ static Evas_Object *__mp_thumbnail_view_get_grid_icon_cb(void *pUserData, Evas_O // Add progess bar Evas_Object *progessbar = elm_layout_add(pObject); - Eina_Bool ret = elm_layout_file_set(progessbar, edj_path, "videolist/progressbar"); - VideoLogInfo("layout file set %s %s",(ret? "Successful": "Failed"), pPart); + elm_layout_file_set(progessbar, edj_path, "videolist/progressbar"); evas_object_size_hint_weight_set(progessbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(progessbar, EVAS_HINT_FILL, EVAS_HINT_FILL); edje_object_part_drag_value_set(elm_layout_edje_get(progessbar), "elm.cur.progressbar", 0.0, 0.0); diff --git a/src/widget/mp-video-rename-ctrl.c b/src/widget/mp-video-rename-ctrl.c index f7f7e08..23dad05 100755 --- a/src/widget/mp-video-rename-ctrl.c +++ b/src/widget/mp-video-rename-ctrl.c @@ -231,12 +231,9 @@ static void __mp_rename_ctrl_ok_btn_cb(void *pUserData, if (ret != 0) { VideoLogError("mp_util_rename_file failed"); } else { - mp_util_svc_move_to_db(g_pRenameHandle->nVideoIndex, - szNewPath); + mp_util_svc_move_to_db(g_pRenameHandle->nVideoIndex, szNewPath); VideoLogDebug("moving to db: %s index: %d", szNewPath, g_pRenameHandle->nVideoIndex); - //this to update video item in video list - mp_util_svc_update_video_item(szNewPath, g_pRenameHandle->nVideoIndex); - mp_util_svc_register_thumbnail_update_func(g_pRenameHandle->nVideoIndex, __mp_rename_ctrl_thumbnail_update_cb, NULL); + mp_util_svc_generate_thumbnai(g_pRenameHandle->nVideoIndex); } char *szMediaUrl = mp_util_config_get_preview();