From 3ff947580f7829ddff385f73d59faeb96e52dcf3 Mon Sep 17 00:00:00 2001 From: Jinkun Jang Date: Sat, 16 Mar 2013 01:15:44 +0900 Subject: merge with master --- server/include/thumb-server-internal.h | 1 + server/thumb-server-internal.c | 48 ++++++++++++++++++++++++++++++++-- server/thumb-server.c | 6 +++++ 3 files changed, 53 insertions(+), 2 deletions(-) (limited to 'server') diff --git a/server/include/thumb-server-internal.h b/server/include/thumb-server-internal.h index cbf8644..d8a16f3 100755 --- a/server/include/thumb-server-internal.h +++ b/server/include/thumb-server-internal.h @@ -46,6 +46,7 @@ gboolean _thumb_daemon_udp_thread(void *data); gboolean _thumb_daemon_start_jobs(gpointer data); void _thumb_daemon_finish_jobs(); +void _thumb_daemon_vconf_cb(void *data); gboolean _thumb_server_prepare_socket(int *sock_fd); gboolean _thumb_server_read_socket(GIOChannel *src, GIOCondition condition, diff --git a/server/thumb-server-internal.c b/server/thumb-server-internal.c index 3844fcb..98416d6 100755 --- a/server/thumb-server-internal.c +++ b/server/thumb-server-internal.c @@ -26,7 +26,7 @@ #include #include #include - +#include #ifdef LOG_TAG #undef LOG_TAG @@ -43,6 +43,7 @@ GMainLoop *g_thumb_server_mainloop; // defined in thumb-server.c as extern #ifdef _USE_MEDIA_UTIL_ gboolean _thumb_server_send_msg_to_agent(int msg_type); #endif +void _thumb_daemon_stop_job(); gboolean _thumb_daemon_start_jobs(gpointer data) { @@ -71,6 +72,46 @@ void _thumb_daemon_finish_jobs() return; } +void _thumb_daemon_vconf_cb(void *data) +{ + int err = -1; + int status = 0; + + thumb_warn("_thumb_daemon_vconf_cb called"); + + err = vconf_get_int(VCONFKEY_SYSMAN_MMC_FORMAT, &status); + if (err == 0) { + if (status == VCONFKEY_SYSMAN_MMC_FORMAT_COMPLETED) { + thumb_warn("SD card format is completed. So media-thumbnail-server stops jobs to extract all thumbnails"); + + _thumb_daemon_stop_job(); + } else { + thumb_dbg("not completed"); + } + } else if (err == -1) { + thumb_err("vconf_get_int failed : %d", err); + } else { + thumb_err("vconf_get_int Unexpected error code: %d", err); + } + + return; +} + +void _thumb_daemon_stop_job() +{ + int i = 0; + char *path = NULL; + + thumb_warn("There are %d jobs in the queue. But all jobs will be stopped", g_idx - g_cur_idx); + + for (i = g_cur_idx; i < g_idx; i++) { + path = arr_path[g_cur_idx++]; + SAFE_FREE(path); + } + + return; +} + int _thumb_daemon_process_job(thumbMsg *req_msg, thumbMsg *res_msg) { int err = -1; @@ -129,7 +170,8 @@ int _thumb_daemon_all_extract() break; } - strncpy(path, (const char *)sqlite3_column_text(sqlite_stmt, 0), MAX_PATH_SIZE + 1); + strncpy(path, (const char *)sqlite3_column_text(sqlite_stmt, 0), sizeof(path)); + path[sizeof(path) - 1] = '\0'; count = sqlite3_column_int(sqlite_stmt, 1); thumb_dbg("Path : %s", path); @@ -339,11 +381,13 @@ gboolean _thumb_server_send_msg_to_agent(int msg_type) if (sendto(sock, &send_msg, sizeof(ms_thumb_server_msg), 0, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) != sizeof(ms_thumb_server_msg)) { thumb_err("sendto failed: %s\n", strerror(errno)); + close(sock); return FALSE; } thumb_dbg("Sending msg to thumbnail agent[%d] is successful", send_msg.msg_type); + close(sock); return TRUE; } #endif diff --git a/server/thumb-server.c b/server/thumb-server.c index 3b79684..9e7c1e1 100755 --- a/server/thumb-server.c +++ b/server/thumb-server.c @@ -27,6 +27,7 @@ #include #include +#include //#include //#include @@ -78,6 +79,11 @@ int main() } } + /* Set VCONFKEY_SYSMAN_MMC_FORMAT callback to get noti for SD card format */ + err = vconf_notify_key_changed(VCONFKEY_SYSMAN_MMC_FORMAT, (vconf_callback_fn) _thumb_daemon_vconf_cb, NULL); + if (err == -1) + thumb_err("vconf_notify_key_changed %s fails", VCONFKEY_SYSMAN_MMC_FORMAT); + /* Create and bind new UDP socket */ if (!_thumb_server_prepare_socket(&sockfd)) { thumb_err("Failed to create socket\n"); -- cgit v1.2.3