From: chen89.chen Date: Fri, 1 Dec 2017 06:14:49 +0000 (+0800) Subject: fix assertion failed: hash_table->ref_count >0, add lock to db query X-Git-Tag: accepted/tizen/unified/20171204.072245^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F32%2F162432%2F2;p=platform%2Fcore%2Fapi%2Fmedia-content.git fix assertion failed: hash_table->ref_count >0, add lock to db query Change-Id: Id2649795347929619a4d0786af5fd5b5c97eae04 --- diff --git a/src/media_folder.c b/src/media_folder.c index 8089a7a..b867581 100755 --- a/src/media_folder.c +++ b/src/media_folder.c @@ -28,9 +28,17 @@ int media_folder_get_folder_count_from_db(filter_h filter, int *folder_count) media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); return MEDIA_CONTENT_ERROR_INVALID_PARAMETER; } +#ifdef _USE_TVPD_MODE + g_mutex_lock(_content_get_db_mutex()); +#endif ret = _media_db_get_group_count(filter, MEDIA_GROUP_FOLDER, folder_count); +#ifdef _USE_TVPD_MODE + g_mutex_unlock(_content_get_db_mutex()); +#endif + + return ret; } @@ -61,7 +69,16 @@ int media_folder_get_media_count_from_db(const char *folder_id, filter_h filter, int ret = MEDIA_CONTENT_ERROR_NONE; if (STRING_VALID(folder_id) && media_count) { +#ifdef _USE_TVPD_MODE + g_mutex_lock(_content_get_db_mutex()); +#endif + ret = _media_db_get_group_item_count(folder_id, filter, MEDIA_GROUP_FOLDER, media_count); + +#ifdef _USE_TVPD_MODE + g_mutex_unlock(_content_get_db_mutex()); +#endif + } else { media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); return MEDIA_CONTENT_ERROR_INVALID_PARAMETER; @@ -75,7 +92,16 @@ int media_folder_foreach_media_from_db(const char *folder_id, filter_h filter, m int ret = MEDIA_CONTENT_ERROR_NONE; if ((callback != NULL) && STRING_VALID(folder_id)) { +#ifdef _USE_TVPD_MODE + g_mutex_lock(_content_get_db_mutex()); +#endif + ret = _media_db_get_group_item(folder_id, filter, callback, user_data, MEDIA_GROUP_FOLDER); + +#ifdef _USE_TVPD_MODE + g_mutex_unlock(_content_get_db_mutex()); +#endif + } else { media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); return MEDIA_CONTENT_ERROR_INVALID_PARAMETER; diff --git a/src/media_storage.c b/src/media_storage.c index 076e5b4..2bd57b2 100755 --- a/src/media_storage.c +++ b/src/media_storage.c @@ -74,7 +74,15 @@ int media_storage_foreach_storage_from_db(filter_h filter, media_storage_cb call int ret = MEDIA_CONTENT_ERROR_NONE; if (callback != NULL) { +#ifdef _USE_TVPD_MODE + g_mutex_lock(_content_get_db_mutex()); +#endif + ret = _media_db_get_storage(filter, callback, user_data); + +#ifdef _USE_TVPD_MODE + g_mutex_unlock(_content_get_db_mutex()); +#endif } else { media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;