[TIZENIOT-1791] [TIZENIOT-2013] fix crash issue in video thumbnail generation 75/245275/1
authoraman.jeph <aman.jeph@samsung.com>
Tue, 6 Oct 2020 09:04:54 +0000 (14:34 +0530)
committeraman.jeph <aman.jeph@samsung.com>
Tue, 6 Oct 2020 09:04:54 +0000 (14:34 +0530)
Change-Id: Ief91645d25e869ceaa988854a7e6fe5d0da2d6e2
Signed-off-by: aman.jeph <aman.jeph@samsung.com>
include/common/mp-util-media-service.h
playview/src/feature/vp-subtitle.c
src/common/mp-util-media-service.c
src/view/mp-video-list-remove-view.c
src/view/mp-video-list-share-via-view.c
src/view/mp-video-list-view-folder.c
src/view/mp-video-list-view-item-of-folder.c
src/view/mp-video-list-view-thumbnail.c
src/widget/mp-video-rename-ctrl.c

index 7a7d65cec5c15da0e8620b8e0114ae4cb8e979aa..eda07a1a9f545db8a3f0b4a75f068b50cb2be650 100755 (executable)
@@ -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);
index 22781f1bb7050c34d05353d451ea5d41ce7223ad..06892d40a369e1b28aad398c3624e01a2cfc9c3c 100755 (executable)
@@ -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);
index 79e9bc859aadd25777783ed3a7b8604f4e25ff60..e9e1ac95230e35cfc4e695440819b2a2a1573dbd 100755 (executable)
@@ -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");
                }
        }
index d74210f2dab363e95f55933c9a09c8ba9a8163ef..94c8c237d0216490303d490729620b615e312f7e 100755 (executable)
@@ -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);
index ea753a245efcbafd59b5e44fdbbdb5f94e742c43..d246feb2eda52ae4a7a1b8f38b48786ad993874f 100755 (executable)
@@ -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);
index 4582296e5af249888257dd9a714a91535b9f9b53..14ec6b04029d252b7a5384598b7a321d272b34cf 100755 (executable)
@@ -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;
        }
index 63872a37b799eefde8fa6c0968856d5ee05357d9..cea661ecfb5ce132816a291c052367248ae8fd17 100755 (executable)
@@ -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);
index 8ebf8a19bb86f53817aefbbbbf639027f58e6439..ca5b265c65a66036ed25bc65eb54480278972b65 100755 (executable)
@@ -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);
index f7f7e086cfd36ff0ce99f2c7a539ce87a74d251d..23dad0525a0fbba5da28865237ddc0fb9935cc20 100755 (executable)
@@ -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();