This logic is for MX feature.
Change-Id: Ib492e96e3d6f854c01dce0c46151b338870c400f
Signed-off-by: minje.ahn <minje.ahn@samsung.com>
MS_MSG_SCANNER_READY, /**< Ready from media scanner */
MS_MSG_SCANNER_RESULT, /**< Result of directory scanning */
MS_MSG_SCANNER_BULK_RESULT, /**< Request bulk insert */
- MS_MSG_STORAGE_META, /**< Request updating meta data */
MS_MSG_DIRECTORY_SCANNING_CANCEL, /**< Request cancel directory scan*/
MS_MSG_STORAGE_SCANNER_COMPLETE, /**< Storage Scanner complete */
MS_MSG_DIRECTORY_SCANNER_COMPLETE, /**< Directory Scanner complete */
Name: media-server
Summary: A server for media content management
-Version: 0.4.27
+Version: 0.4.28
Release: 0
Group: Multimedia/Service
License: Apache-2.0
%if 0%{?product_tv}
export CFLAGS="$CFLAGS -D_USE_TVPD_MODE"
%else
-export CFLAGS="$CFLAGS -D_USE_MULTI_USER -D_USE_META_UPDATE"
+export CFLAGS="$CFLAGS -D_USE_MULTI_USER"
%endif
export CFLAGS="$CFLAGS -D_GNU_SOURCE -D_FORTIFY_SOURCE=2 -DTIZEN_DEBUG_ENABLE -DSYSCONFDIR=\\\"%{_sysconfdir}\\\""
export CFLAGS+=" -DPATH_LIBDIR=\\\"%{_libdir}\\\""
#define DATADISC_STORAGE_ID "data_disc"
typedef enum {
- MS_ITEM_INSERT = 0,
- MS_ITEM_DELETE = 1,
- MS_ITEM_UPDATE = 2,
+ MS_ITEM_INSERT = 0,
+ MS_ITEM_DELETE = 1,
+ MS_ITEM_UPDATE = 2,
} ms_noti_type_e;
int ms_load_functions(void);
int ms_update_storage(sqlite3 *handle, const char *storage_id, const char *storage_path, uid_t uid);
int ms_set_storage_validity(sqlite3 *handle, const char *storage_id, int validity, uid_t uid);
int ms_set_all_storage_validity(sqlite3 *handle, int validity, uid_t uid);
-int ms_update_meta_batch(sqlite3 *handle, uid_t uid);
int ms_check_folder_exist(sqlite3 *handle, const char *storage_id, const char *folder_path);
int ms_get_folder_id(sqlite3 *handle, const char *storage_id, const char *path, char **folder_id);
int ms_get_media_type(const char *path, int *media_type);
typedef enum {
MS_SCAN_INVALID,
MS_SCAN_PART,
- MS_SCAN_META,
MS_SCAN_ALL,
} ms_dir_scan_type_t;
typedef int (*SET_STORAGE_VALIDITY)(sqlite3 *, const char *, int, uid_t uid);
typedef int (*SET_ALL_STORAGE_VALIDITY)(sqlite3 *, int, uid_t);
-typedef int (*UPDATE_ITEM_META)(sqlite3 *, uid_t);
-
typedef int (*DELETE_INVALID_FOLDER_BY_PATH)(sqlite3 *, const char *, const char *, uid_t);
typedef int (*CHECK_FOLDER_EXIST)(sqlite3*, const char*, const char*);
typedef int (*GET_EXTRACT_LIST)(sqlite3*, const char*, int, const char*, int, void*);
eUPDATE_STORAGE,
eSET_STORAGE_VALIDITY,
eSET_ALL_STORAGE_VALIDITY,
- eUPDATE_ITEM_META,
eDELETE_INVALID_FOLDER_BY_PATH,
eCHECK_FOLDER_EXIST,
eGET_MEDIA_TYPE,
"update_storage",
"set_storage_validity",
"set_all_storage_validity",
- "update_item_meta",
"delete_invalid_folder_by_path",
"check_folder_exist",
"get_media_type",
return ret;
}
-int ms_update_meta_batch(sqlite3 *handle, uid_t uid)
-{
- int ret = MS_MEDIA_ERR_NONE;
-
- MS_DBG_FENTER();
-
- ret = ((UPDATE_ITEM_META)func_array[eUPDATE_ITEM_META])(handle, uid);
- MS_DBG_RETVM_IF(ret != MS_MEDIA_ERR_NONE, ret, "UPDATE_ITEM_META failed [%d]", ret);
-
- return ret;
-}
-
int ms_delete_invalid_folder_by_path(sqlite3 *handle, const char *storage_id, const char *folder_path, uid_t uid)
{
int ret = MS_MEDIA_ERR_NONE;
gpointer msc_register_thread(gpointer data);
gpointer msc_storage_scan_thread(gpointer data);
int msc_del_cancel_path(void);
-void msc_metadata_update_thread(ms_comm_msg_s *recv_msg);
void msc_init_scanner(void);
void msc_deinit_scanner(void);
int msc_push_scan_request(ms_scan_type_e scan_type, ms_comm_msg_s *recv_msg);
return NULL;
}
-static gpointer __msc_metadata_update_thread(gpointer data)
-{
- ms_comm_msg_s *scan_data = data;
- int ret = MS_MEDIA_ERR_NONE;
- sqlite3 *handle = NULL;
-
- ret = ms_connect_db(&handle, scan_data->uid);
- MS_DBG_RETVM_IF(ret != MS_MEDIA_ERR_NONE, NULL, "ms_connect_db failed");
-
- MS_DBG_INFO("META UPDATE START");
-
- ret = ms_update_meta_batch(handle, scan_data->uid);
- ms_disconnect_db(handle);
-
- msc_send_result(ret, scan_data);
- g_free(scan_data);
-
- MS_DBG_INFO("META UPDATE END [%d]", ret);
-
- return NULL;
-}
-
-void msc_metadata_update_thread(ms_comm_msg_s *recv_msg)
-{
- GThread *update_thread = g_thread_new("metadata_update_thread", __msc_metadata_update_thread, recv_msg);
- g_thread_join(update_thread);
-}
-
void msc_init_scanner(void)
{
if (!scan_queue) scan_queue = g_async_queue_new();
msc_remove_dir_scan_request(recv_msg);
g_free(recv_msg);
break;
- case MS_MSG_STORAGE_META:
- msc_metadata_update_thread(recv_msg);
- break;
default:
MS_DBG_ERR("THIS REQUEST IS INVALID %d", recv_msg->msg_type);
g_free(recv_msg);
static bool __ms_is_dcm_supported(void);
static bool __ms_is_external_supported(void);
-#ifdef _USE_META_UPDATE
-static char *priv_lang = NULL;
-#endif
-
#ifdef _USE_TVPD_MODE
static bool __ms_deal_reset_status(void)
{
g_mutex_clear(&scanner_mutex);
}
-#ifdef _USE_META_UPDATE
-static void __ms_change_lang_vconf_cb(keynode_t *key, void* data)
-{
- char *lang = NULL;
- const char *eng = "en";
- const char *chi = "zh";
- const char *jpn = "ja";
- const char *kor = "ko";
- bool need_update = false;
-
- if (!ms_config_get_str(VCONFKEY_LANGSET, &lang)) {
- MS_DBG_ERR("Get VCONFKEY_LANGSET failed.");
- return;
- }
-
- MS_DBG("CURRENT LANGUAGE [%s] [%s]", priv_lang, lang);
-
- if (MS_STRING_VALID(priv_lang) && MS_STRING_VALID(lang)) {
- if (strcmp(priv_lang, lang) == 0) {
- need_update = false;
- } else if ((strncmp(lang, eng, strlen(eng)) == 0) ||
- (strncmp(lang, chi, strlen(chi)) == 0) ||
- (strncmp(lang, jpn, strlen(jpn)) == 0) ||
- (strncmp(lang, kor, strlen(kor)) == 0)) {
- need_update = true;
- } else {
- if ((strncmp(priv_lang, eng, strlen(eng)) == 0) ||
- (strncmp(priv_lang, chi, strlen(chi)) == 0) ||
- (strncmp(priv_lang, jpn, strlen(jpn)) == 0) ||
- (strncmp(priv_lang, kor, strlen(kor)) == 0)) {
- need_update = true;
- }
- }
- } else {
- need_update = true;
- }
-
- if (need_update) {
- uid_t uid = MEDIA_DEFAULT_UID;
- ms_sys_get_uid(&uid);
- ms_send_storage_scan_request(INTERNAL_STORAGE_ID, INTERNAL_STORAGE_ID, MS_SCAN_META, uid);
- } else {
- MS_DBG_WARN("language is changed but do not update meta data");
- }
-
- g_free(priv_lang);
-
- if (MS_STRING_VALID(lang))
- priv_lang = g_strdup(lang);
-
- g_free(lang);
-}
-#endif
-
int main(int argc, char **argv)
{
GThread *db_thread = NULL;
static void __ms_add_event_receiver(void)
{
- int err = 0;
-#ifdef _USE_META_UPDATE
- char *lang = NULL;
-
- if (!ms_config_get_str(VCONFKEY_LANGSET, &lang)) {
- MS_DBG_ERR("Get VCONFKEY_LANGSET failed.");
- return;
- }
-
- if (MS_STRING_VALID(lang)) {
- MS_DBG("Set language change cb [%s]", lang);
-
- priv_lang = g_strdup(lang);
-
- err = vconf_notify_key_changed(VCONFKEY_LANGSET, (vconf_callback_fn) __ms_change_lang_vconf_cb, NULL);
- if (err == -1)
- MS_DBG_ERR("add call back function for event %s fails", VCONFKEY_LANGSET);
- }
-
- g_free(lang);
-
-#endif
#ifdef _USE_TVPD_MODE
+ int err = 0;
/*add noti receiver for smart hub reset */
err = vconf_notify_key_changed(SMARTHUB_RESET_VCONF, (vconf_callback_fn) __ms_smarthub_vconf_cb, NULL);
if (err == -1)
case MS_SCAN_INVALID:
scan_msg.msg_type = MS_MSG_STORAGE_INVALID;
break;
- case MS_SCAN_META:
- scan_msg.msg_type = MS_MSG_STORAGE_META;
- break;
default:
MS_DBG_ERR("Invalid scan type");
return MS_MEDIA_ERR_INVALID_PARAMETER;