char *mime_type;
};
-void _media_svc_set_noti_from_pid(int pid);
-void _media_svc_initialize_noti_list(void);
-void _media_svc_insert_item_to_noti_list(media_svc_content_info_s *content_info);
-void _media_svc_publish_noti_list(void);
void _media_svc_destroy_noti_item(media_svc_noti_item *item);
int _media_svc_publish_noti(media_item_update_type_e update_type, const char *path, int media_type, const char *uuid, const char *mime_type);
int _media_svc_publish_dir_noti(media_item_update_type_e update_type, const char *path, const char *uuid, int pid);
int media_svc_create_table(uid_t uid);
int media_svc_check_item_exist_by_path(sqlite3 *handle, const char *path);
int media_svc_insert_folder(sqlite3 *handle, const char *storage_id, const char *path, uid_t uid);
-int media_svc_insert_item_begin(bool with_noti, int from_pid);
+void media_svc_insert_item_begin(void);
int media_svc_insert_item_end(uid_t uid);
int media_svc_insert_item_bulk(sqlite3 *handle, const char *storage_id, const char *path, uid_t uid);
int media_svc_insert_item_immediately(sqlite3 *handle, const char *path, uid_t uid);
#include <stddef.h>
#include "media-svc.h"
-int insert_item_begin(bool with_noti, int from_pid)
+void insert_item_begin(void)
{
- return media_svc_insert_item_begin(with_noti, from_pid);
+ media_svc_insert_item_begin();
}
int insert_item_end(uid_t uid)
#include "media-svc-util.h"
#include "media-svc-debug.h"
-static __thread GSList *g_inserted_noti_list = NULL;
-static __thread int g_noti_from_pid = -1;
-
-static void __media_svc_publish_noti_by_item(gpointer data, gpointer user_data)
-{
- int ret = MS_MEDIA_ERR_NONE;
- media_svc_noti_item *item = (media_svc_noti_item *)data;
-
- if (item && item->path) {
- ret = media_db_update_send(item->pid, item->update_item, item->update_type, item->path, item->media_uuid, item->media_type, item->mime_type);
- if (ret != MS_MEDIA_ERR_NONE) {
- media_svc_sec_error("media_db_update_send failed : %d [%s]", ret, item->path);
- } else {
- media_svc_debug("media_db_update_send success");
- }
- } else {
- media_svc_debug("invalid path");
- }
-}
-
-static void __media_svc_destroy_noti_item(gpointer data)
-{
- media_svc_noti_item *item = (media_svc_noti_item *)data;
-
- g_free(item->media_uuid);
- g_free(item->path);
- g_free(item->mime_type);
- g_free(item);
-}
-
int _media_svc_publish_noti(media_item_update_type_e update_type, const char *path, int media_type, const char *uuid, const char *mime_type)
{
int ret = MS_MEDIA_ERR_NONE;
return ret;
}
-void _media_svc_set_noti_from_pid(int pid)
-{
- g_noti_from_pid = pid;
-}
-
-void _media_svc_initialize_noti_list(void)
-{
- if (g_inserted_noti_list)
- g_slist_free_full(g_inserted_noti_list, __media_svc_destroy_noti_item);
-
- g_inserted_noti_list = NULL;
-}
-
-void _media_svc_insert_item_to_noti_list(media_svc_content_info_s *content_info)
-{
- media_svc_noti_item *item = NULL;
-
- if (!content_info)
- return;
-
- item = g_new0(media_svc_noti_item, 1);
-
- item->pid = g_noti_from_pid;
- item->update_item = MS_MEDIA_ITEM_INSERT; /* INSERT */
- item->update_type = MS_MEDIA_ITEM_FILE;
- item->media_type = content_info->media_type;
- item->media_uuid = g_strdup(content_info->media_uuid);
- item->path = g_strdup(content_info->path);
- item->mime_type = g_strdup(content_info->mime_type);
-
- g_inserted_noti_list = g_slist_append(g_inserted_noti_list, (gpointer)item);
-}
-
-void _media_svc_publish_noti_list(void)
-{
- g_slist_foreach(g_inserted_noti_list, __media_svc_publish_noti_by_item, NULL);
-
- _media_svc_initialize_noti_list();
-}
-
void _media_svc_destroy_noti_item(media_svc_noti_item *item)
{
if (!item)
static __thread int g_media_svc_cur_data_cnt = 0;
static int g_media_svc_other_support = -1;
-/* Flag for items to be published by notification */
-static __thread bool g_insert_with_noti = false;
-
#define BATCH_ITEM_COUNT_MAX 100
int media_svc_check_table_exist(sqlite3 *handle, bool *exist)
return _media_svc_check_data_by_path(handle, path);
}
-int media_svc_insert_item_begin(bool with_noti, int from_pid)
+void media_svc_insert_item_begin(void)
{
g_media_svc_cur_data_cnt = 0;
-
- /* Prepare for making noti item list */
- if (with_noti) {
- media_svc_debug("making noti list from pid[%d]", from_pid);
- _media_svc_initialize_noti_list();
- _media_svc_set_noti_from_pid(from_pid);
- g_insert_with_noti = true;
- }
-
- return MS_MEDIA_ERR_NONE;
}
int media_svc_insert_item_end(uid_t uid)
media_svc_debug_fenter();
- if (g_media_svc_cur_data_cnt > 0) {
+ 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();
- g_insert_with_noti = false;
- _media_svc_set_noti_from_pid(-1);
- }
- }
g_media_svc_cur_data_cnt = 0;
ret = _media_svc_insert_item_stack(&content_info);
media_svc_retv_del_if(ret != MS_MEDIA_ERR_NONE, ret, &content_info);
- if (g_insert_with_noti)
- _media_svc_insert_item_to_noti_list(&content_info);
-
/* To avoid over-occupying memory, update per BATCH_ITEM_COUNT_MAX. */
if (++g_media_svc_cur_data_cnt == BATCH_ITEM_COUNT_MAX) {
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)
- _media_svc_publish_noti_list();
-
g_media_svc_cur_data_cnt = 0;
}