From 694288cde0177f3faa083ebbe87c358836f55e48 Mon Sep 17 00:00:00 2001 From: Minje Ahn Date: Wed, 12 Feb 2020 09:11:17 +0900 Subject: [PATCH] Merge query list To reduce memory occupancy, merge insert_item_list, update_meta_list, set_validity_list into scanner_list(New list). Change-Id: Ic51656b6be32f9f7141d0deafe3d076156ac1f2d Signed-off-by: Minje Ahn --- include/media-svc.h | 2 -- plugin/media-content-plugin.c | 6 ++-- src/common/media-svc-media.c | 22 +++++--------- src/common/media-svc.c | 60 ++++++++++---------------------------- src/include/common/media-svc-env.h | 5 +--- 5 files changed, 27 insertions(+), 68 deletions(-) diff --git a/include/media-svc.h b/include/media-svc.h index ac66bd6..b96f5ad 100755 --- a/include/media-svc.h +++ b/include/media-svc.h @@ -51,8 +51,6 @@ int media_svc_move_item(sqlite3 *handle, const char *mime_type, uid_t uid); -int media_svc_set_item_validity_begin(int data_cnt); -int media_svc_set_item_validity_end(uid_t uid); int media_svc_set_item_validity(const char *path, int validity, uid_t uid); int media_svc_delete_item_by_path(sqlite3 *handle, const char *storage_id, const char *path, uid_t uid); int media_svc_refresh_item(sqlite3 *handle, bool is_direct, const char *storage_id, ms_user_storage_type_e storage_type, const char *path, uid_t uid); diff --git a/plugin/media-content-plugin.c b/plugin/media-content-plugin.c index 6dd33cb..e5a5ebb 100755 --- a/plugin/media-content-plugin.c +++ b/plugin/media-content-plugin.c @@ -48,12 +48,14 @@ int insert_item(sqlite3 *handle, const char *storage_id, const char *file_path, int set_item_validity_begin(int item_cnt) { - return media_svc_set_item_validity_begin(item_cnt); + /* No more need in v1 */ + return MS_MEDIA_ERR_NONE; } int set_item_validity_end(uid_t uid) { - return media_svc_set_item_validity_end(uid); + /* No more need in v1 */ + return MS_MEDIA_ERR_NONE; } int set_item_validity(const char *storage_id, const char *file_path, int storage_type, int validity, uid_t uid) diff --git a/src/common/media-svc-media.c b/src/common/media-svc-media.c index 246b518..3092b0d 100755 --- a/src/common/media-svc-media.c +++ b/src/common/media-svc-media.c @@ -32,9 +32,7 @@ #define MEDIA_SVC_MAX_COMMIT_SIZE 200 -static __thread GList *g_media_svc_item_validity_query_list = NULL; -static __thread GList *g_media_svc_insert_item_query_list = NULL; -static __thread GList *g_media_svc_update_item_query_list = NULL; +static __thread GList *g_media_svc_scanner_query_list = NULL; static __thread GList *g_media_svc_update_list = NULL; int _media_svc_count_record_with_path(sqlite3 *handle, const char *path, int *count) @@ -216,7 +214,7 @@ int _media_svc_insert_item_with_data(bool is_direct, media_svc_content_info_s *c media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "failed to insert item"); } else { media_svc_sec_debug("Query[%s]", sql); - _media_svc_sql_query_add(&g_media_svc_insert_item_query_list, &sql); + _media_svc_sql_query_add(&g_media_svc_scanner_query_list, &sql); } return MS_MEDIA_ERR_NONE; @@ -246,7 +244,7 @@ int _media_svc_update_meta_with_data(media_svc_content_info_s *content_info) if (sql != NULL) { media_svc_debug("query[%s]", sql); - _media_svc_sql_query_add(&g_media_svc_update_item_query_list, &sql); + _media_svc_sql_query_add(&g_media_svc_scanner_query_list, &sql); } else { media_svc_error("sqlite3_mprintf failed"); ret = MS_MEDIA_ERR_OUT_OF_MEMORY; @@ -327,7 +325,7 @@ int _media_svc_update_item_with_data(bool is_direct, media_svc_content_info_s *c /* Scanner use only batch insert */ if (is_direct) { media_svc_sec_debug("Query [%s]", sql); - _media_svc_sql_query_add(&g_media_svc_insert_item_query_list, &sql); + _media_svc_sql_query_add(&g_media_svc_scanner_query_list, &sql); } else { ret = _media_svc_sql_query(sql, uid); SQLITE3_SAFE_FREE(sql); @@ -394,7 +392,7 @@ int _media_svc_update_item_validity(const char *path, int validity, bool stack_q ret = _media_svc_sql_query_direct(sql, uid); SQLITE3_SAFE_FREE(sql); } else { - _media_svc_sql_query_add(&g_media_svc_item_validity_query_list, &sql); + _media_svc_sql_query_add(&g_media_svc_scanner_query_list, &sql); } return ret; @@ -437,14 +435,8 @@ int _media_svc_list_query_do(media_svc_query_type_e query_type, uid_t uid) ret = _media_svc_sql_query_list(&g_media_svc_update_list, uid); break; - case MEDIA_SVC_QUERY_SET_ITEM_VALIDITY: - ret = _media_svc_sql_query_list_direct(&g_media_svc_item_validity_query_list, uid); - break; - case MEDIA_SVC_QUERY_INSERT_ITEM: - ret = _media_svc_sql_query_list_direct(&g_media_svc_insert_item_query_list, uid); - break; - case MEDIA_SVC_QUERY_UPDATE_ITEM: - ret = _media_svc_sql_query_list_direct(&g_media_svc_update_item_query_list, uid); + case MEDIA_SVC_QUERY_SCANNER: + ret = _media_svc_sql_query_list_direct(&g_media_svc_scanner_query_list, uid); break; default: media_svc_error("Wrong type[%d]", query_type); diff --git a/src/common/media-svc.c b/src/common/media-svc.c index 387cf7f..4afa99d 100755 --- a/src/common/media-svc.c +++ b/src/common/media-svc.c @@ -32,11 +32,8 @@ #include "media-svc-noti.h" #include "media-svc-storage.h" -static __thread int g_media_svc_item_validity_data_cnt = 0; -static __thread int g_media_svc_item_validity_cur_data_cnt = 0; - -static __thread int g_media_svc_insert_item_data_cnt = 0; -static __thread int g_media_svc_insert_item_cur_data_cnt = 0; +static __thread int g_media_svc_data_cnt = 0; +static __thread int g_media_svc_cur_data_cnt = 0; /* Flag for items to be published by notification */ static __thread bool g_insert_with_noti = false; @@ -185,8 +182,8 @@ int media_svc_insert_item_begin(int data_cnt, bool with_noti, int from_pid) { media_svc_retvm_if(data_cnt < 1, MS_MEDIA_ERR_INVALID_PARAMETER, "data_cnt shuld be bigger than 1"); - g_media_svc_insert_item_data_cnt = data_cnt; - g_media_svc_insert_item_cur_data_cnt = 0; + g_media_svc_data_cnt = data_cnt; + g_media_svc_cur_data_cnt = 0; /* Prepare for making noti item list */ if (with_noti) { @@ -205,8 +202,8 @@ int media_svc_insert_item_end(uid_t uid) media_svc_debug_fenter(); - if (g_media_svc_insert_item_cur_data_cnt > 0) { - ret = _media_svc_list_query_do(MEDIA_SVC_QUERY_INSERT_ITEM, uid); + if (g_media_svc_cur_data_cnt > 0) { + ret = _media_svc_list_query_do(MEDIA_SVC_QUERY_SCANNER, uid); if (g_insert_with_noti) { media_svc_debug("sending noti list"); _media_svc_publish_noti_list(); @@ -216,8 +213,8 @@ int media_svc_insert_item_end(uid_t uid) } } - g_media_svc_insert_item_data_cnt = 0; - g_media_svc_insert_item_cur_data_cnt = 0; + g_media_svc_data_cnt = 0; + g_media_svc_cur_data_cnt = 0; return ret; } @@ -270,8 +267,8 @@ int media_svc_insert_item_bulk(sqlite3 *handle, const char *storage_id, ms_user_ if (g_insert_with_noti) _media_svc_insert_item_to_noti_list(&content_info); - if (++g_media_svc_insert_item_cur_data_cnt == g_media_svc_insert_item_data_cnt) { - ret = _media_svc_list_query_do(MEDIA_SVC_QUERY_INSERT_ITEM, uid); + if (++g_media_svc_cur_data_cnt == g_media_svc_data_cnt) { + ret = _media_svc_list_query_do(MEDIA_SVC_QUERY_SCANNER, uid); media_svc_retv_del_if(ret != MS_MEDIA_ERR_NONE, ret, &content_info); if (g_insert_with_noti) { @@ -279,7 +276,7 @@ int media_svc_insert_item_bulk(sqlite3 *handle, const char *storage_id, ms_user_ _media_svc_initialize_noti_list(); } - g_media_svc_insert_item_cur_data_cnt = 0; + g_media_svc_cur_data_cnt = 0; } _media_svc_destroy_content_info(&content_info); @@ -424,33 +421,6 @@ int media_svc_move_item(sqlite3 *handle, return MS_MEDIA_ERR_NONE; } -int media_svc_set_item_validity_begin(int data_cnt) -{ - media_svc_debug("Transaction data count : [%d]", data_cnt); - - media_svc_retvm_if(data_cnt < 1, MS_MEDIA_ERR_INVALID_PARAMETER, "data_cnt shuld be bigger than 1"); - - g_media_svc_item_validity_data_cnt = data_cnt; - g_media_svc_item_validity_cur_data_cnt = 0; - - return MS_MEDIA_ERR_NONE; -} - -int media_svc_set_item_validity_end(uid_t uid) -{ - int ret = MS_MEDIA_ERR_NONE; - - media_svc_debug_fenter(); - - if (g_media_svc_item_validity_cur_data_cnt > 0) - ret = _media_svc_list_query_do(MEDIA_SVC_QUERY_SET_ITEM_VALIDITY, uid); - - g_media_svc_item_validity_data_cnt = 0; - g_media_svc_item_validity_cur_data_cnt = 0; - - return ret; -} - int media_svc_set_item_validity(const char *path, int validity, uid_t uid) { int ret = MS_MEDIA_ERR_NONE; @@ -458,11 +428,11 @@ int media_svc_set_item_validity(const char *path, int validity, uid_t uid) ret = _media_svc_update_item_validity(path, validity, true, uid); media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret); - if (++g_media_svc_item_validity_cur_data_cnt == g_media_svc_item_validity_data_cnt) { - ret = _media_svc_list_query_do(MEDIA_SVC_QUERY_SET_ITEM_VALIDITY, uid); + if (++g_media_svc_cur_data_cnt == g_media_svc_data_cnt) { + ret = _media_svc_list_query_do(MEDIA_SVC_QUERY_SCANNER, uid); media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret); - g_media_svc_item_validity_cur_data_cnt = 0; + g_media_svc_cur_data_cnt = 0; } return ret; @@ -680,7 +650,7 @@ int media_svc_update_item_meta(sqlite3 *handle, uid_t uid) g_ptr_array_free(path_list, TRUE); - ret = _media_svc_list_query_do(MEDIA_SVC_QUERY_UPDATE_ITEM, uid); + ret = _media_svc_list_query_do(MEDIA_SVC_QUERY_SCANNER, uid); media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "_media_svc_list_query_do failed"); /* Noti for this */ diff --git a/src/include/common/media-svc-env.h b/src/include/common/media-svc-env.h index 59580ce..6d976d2 100755 --- a/src/include/common/media-svc-env.h +++ b/src/include/common/media-svc-env.h @@ -151,10 +151,7 @@ enum Exif_Orientation { }; typedef enum { - MEDIA_SVC_QUERY_INSERT_ITEM, - MEDIA_SVC_QUERY_SET_ITEM_VALIDITY, - MEDIA_SVC_QUERY_MOVE_ITEM, - MEDIA_SVC_QUERY_UPDATE_ITEM, + MEDIA_SVC_QUERY_SCANNER, MEDIA_SVC_QUERY_UPDATE_COMMON, } media_svc_query_type_e; -- 2.7.4