X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fmedia_content.c;h=cf5560905f303bb93655e0f9b2846f641502ed8b;hb=0173a77398132c9335bf72d6d5a82afd100c1cf7;hp=f66ffef14732df3b44365570ae9e9e86fb9d10ec;hpb=778dd8b6b85916332ceb905a7986c3268b187907;p=platform%2Fcore%2Fapi%2Fmedia-content.git diff --git a/src/media_content.c b/src/media_content.c old mode 100755 new mode 100644 index f66ffef..cf55609 --- a/src/media_content.c +++ b/src/media_content.c @@ -36,20 +36,25 @@ uid_t _content_get_uid(void) return content_g_uid; } -int _content_query_prepare(char *select_query, char *condition_query, char *option_query, sqlite3_stmt **stmt) +int _content_query_prepare(const char *select_query, const char *condition_query, const char *option_query, sqlite3_stmt **stmt) { int ret = MEDIA_CONTENT_ERROR_NONE; char *query = NULL; media_content_retvm_if(!STRING_VALID(select_query), MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "invalid select_query"); - if (!STRING_VALID(condition_query)) - condition_query = (char *)" "; - - if (!STRING_VALID(option_query)) - option_query = (char *)" "; + if (STRING_VALID(condition_query)) { + if (STRING_VALID(option_query)) + query = sqlite3_mprintf("%s AND %s %s", select_query, condition_query, option_query); + else + query = sqlite3_mprintf("%s AND %s", select_query, condition_query); + } else { + if (STRING_VALID(option_query)) + query = sqlite3_mprintf("%s %s", select_query, option_query); + else + query = sqlite3_mprintf("%s", select_query); + } - query = sqlite3_mprintf("%s %s %s", select_query, condition_query, option_query); ret = _content_get_result(query, stmt); SQLITE3_SAFE_FREE(query); @@ -136,45 +141,37 @@ int _content_query_prepare_by_union_select(sqlite3_stmt **stmt, char *select_que } #endif -int _content_error_capi(int content_error) +int _content_error_capi(int internal_error) { - if (content_error != MEDIA_CONTENT_ERROR_NONE) - media_content_error("MS Error[%d]", content_error); - - /*Error None*/ - if (content_error == MS_MEDIA_ERR_NONE) + if (internal_error == MS_MEDIA_ERR_NONE) return MEDIA_CONTENT_ERROR_NONE; - /* Internal operation error*/ - else if ((content_error == MS_MEDIA_ERR_INVALID_PARAMETER) || - (content_error == MS_MEDIA_ERR_INVALID_PATH) || - (content_error == MS_MEDIA_ERR_THUMB_DUPLICATED_REQUEST)) - return MEDIA_CONTENT_ERROR_INVALID_PARAMETER; + media_content_error("MS Error[%d]", internal_error); - else if (content_error == MS_MEDIA_ERR_OUT_OF_MEMORY) + switch (internal_error) { + case MS_MEDIA_ERR_INVALID_PARAMETER: + return MEDIA_CONTENT_ERROR_INVALID_PARAMETER; + case MS_MEDIA_ERR_OUT_OF_MEMORY: return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY; - - /* DB operation error*/ - else if (content_error == MS_MEDIA_ERR_DB_BUSY_FAIL) + case MS_MEDIA_ERR_DB_BUSY_FAIL: return MEDIA_CONTENT_ERROR_DB_BUSY; - - else if ((content_error <= MS_MEDIA_ERR_DB_CONNECT_FAIL) && (content_error >= MS_MEDIA_ERR_DB_INTERNAL)) + case MS_MEDIA_ERR_DB_CONSTRAINT_FAIL: + case MS_MEDIA_ERR_DB_NO_RECORD: + case MS_MEDIA_ERR_DB_CORRUPT: + case MS_MEDIA_ERR_DB_FULL_FAIL: + case MS_MEDIA_ERR_DB_RESET: + case MS_MEDIA_ERR_DB_INTERNAL: return MEDIA_CONTENT_ERROR_DB_FAILED; - - /* IPC operation error*/ - else if ((content_error <= MS_MEDIA_ERR_SOCKET_CONN) && (content_error >= MS_MEDIA_ERR_SOCKET_INTERNAL)) + case MS_MEDIA_ERR_IPC: return MEDIA_CONTENT_ERROR_NETWORK; - - /* MEDIA SERVER error*/ - else if (content_error == MS_MEDIA_ERR_PERMISSION_DENIED) + case MS_MEDIA_ERR_PERMISSION_DENIED: return MEDIA_CONTENT_ERROR_PERMISSION_DENIED; - - /* Thumbnail error*/ - else if ((content_error == MS_MEDIA_ERR_THUMB_TOO_BIG) || (content_error == MS_MEDIA_ERR_THUMB_UNSUPPORTED)) - return MEDIA_CONTENT_ERROR_UNSUPPORTED_CONTENT; - - /*ETC*/ - return MEDIA_CONTENT_ERROR_INVALID_OPERATION; + case MS_MEDIA_ERR_THUMB_TOO_BIG: + case MS_MEDIA_ERR_THUMB_UNSUPPORTED: + return MEDIA_CONTENT_ERROR_UNSUPPORTED_CONTENT; + default: + return MEDIA_CONTENT_ERROR_INVALID_OPERATION; + } } int _content_query_sql(char *query_str) @@ -283,7 +280,7 @@ int media_content_scan_file(const char *path) /* This means this path has to be inserted or refreshed */ folder_path = g_path_get_dirname(repl_path); ret = _media_util_check_ignore_dir(folder_path, &ignore_dir); - SAFE_FREE(folder_path); + g_free(folder_path); media_content_retvm_if(ignore_dir == TRUE, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Invalid folder path"); /* check feature */ @@ -351,7 +348,8 @@ void _media_content_scan_cb(media_request_result_s* result, void *user_data) err = _content_error_capi(result->result); #ifdef _USE_TVPD_MODE if (result->request_type != MEDIA_REQUEST_SCAN_COMPLETE && - result->request_type != MEDIA_REQUEST_SCAN_PARTIAL) { + result->request_type != MEDIA_REQUEST_SCAN_PARTIAL && + result->request_type != MEDIA_RECURSIVE_START) { if (cb_data && cb_data->callback) { media_content_debug("begin:User callback is being called now, result=%d", err); cb_data->callback(err, cb_data->user_data); @@ -389,6 +387,8 @@ void _media_content_scan_cb_v2(media_request_result_s* result, void *user_data) complete_phase = MEDIA_CONTENT_SCAN_COMPLETE; else if (result->request_type == MEDIA_REQUEST_EXTRACT_COMPLETE) complete_phase = MEDIA_CONTENT_EXTRACT_COMPLETE; + else if (result->request_type == MEDIA_RECURSIVE_START) + complete_phase = MEDIA_CONTENT_RECURSIVE_START; if (cb_data && cb_data->callback) cb_data->callback(err, complete_phase, cb_data->user_data); @@ -396,7 +396,8 @@ void _media_content_scan_cb_v2(media_request_result_s* result, void *user_data) media_content_debug("run error"); if ((result->request_type != MEDIA_REQUEST_SCAN_COMPLETE) && - (result->request_type != MEDIA_REQUEST_SCAN_PARTIAL)) + (result->request_type != MEDIA_REQUEST_SCAN_PARTIAL) && + (result->request_type != MEDIA_RECURSIVE_START)) SAFE_FREE(cb_data); return; @@ -552,10 +553,21 @@ int media_content_add_db_updated_cb(media_content_db_update_cb callback, void *u noti_info->user_data = user_data; ret = media_db_update_subscribe_internal((MediaNotiHandle*)noti_handle, _media_content_db_update_noti_cb, (void *)noti_info); + if (ret != MS_MEDIA_ERR_NONE) + SAFE_FREE(noti_info); return _content_error_capi(ret); } +#ifdef TIZEN_FEATURE_COMPATIBILITY +int media_content_set_db_updated_cb(media_content_db_update_cb callback, void *user_data) +{ + media_content_warn("DEPRECATION WARNING: media_content_set_db_updated_cb() is removed from 5.0."); + + return MEDIA_CONTENT_ERROR_NONE; +} +#endif + void __media_content_clear_user_data(void *user_data) { media_noti_cb_s *noti_info = user_data;