diff options
-rw-r--r-- | CMakeLists.txt | 2 | ||||
-rwxr-xr-x | packaging/capi-media-controller.spec | 2 | ||||
-rw-r--r-- | svc/daemon/media_controller_main.c | 4 | ||||
-rw-r--r-- | svc/include/media_controller_cynara.h (renamed from svc/media_controller_cynara.h) | 0 | ||||
-rwxr-xr-x | svc/include/media_controller_db_util.h (renamed from svc/media_controller_db_util.h) | 5 | ||||
-rw-r--r-- | svc/include/media_controller_socket.h (renamed from svc/media_controller_socket.h) | 0 | ||||
-rwxr-xr-x | svc/include/media_controller_svc.h (renamed from svc/media_controller_svc.h) | 0 | ||||
-rwxr-xr-x[-rw-r--r--] | svc/media_controller_db_util.c | 57 | ||||
-rwxr-xr-x | svc/media_controller_svc.c | 5 |
9 files changed, 70 insertions, 5 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 4d52595..78c61d2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,7 +34,7 @@ SET(PREFIX ${CMAKE_INSTALL_PREFIX}) SET(VERSION ${version}) SET(INC_DIR include) -SET(SVC_DIR svc) +SET(SVC_DIR svc/include) INCLUDE_DIRECTORIES(${INC_DIR} ${SVC_DIR}) diff --git a/packaging/capi-media-controller.spec b/packaging/capi-media-controller.spec index f3ced4b..d0a2966 100755 --- a/packaging/capi-media-controller.spec +++ b/packaging/capi-media-controller.spec @@ -1,6 +1,6 @@ Name: capi-media-controller Summary: A media controller library in Tizen Native API -Version: 0.1.33 +Version: 0.1.34 Release: 1 Group: Multimedia/API License: Apache-2.0 diff --git a/svc/daemon/media_controller_main.c b/svc/daemon/media_controller_main.c index f71cf8c..4bca35a 100644 --- a/svc/daemon/media_controller_main.c +++ b/svc/daemon/media_controller_main.c @@ -15,8 +15,8 @@ */ #include "media_controller_private.h" -#include "../media_controller_socket.h" -#include "../media_controller_svc.h" +#include "media_controller_socket.h" +#include "media_controller_svc.h" #include "media_controller_cynara.h" GMainLoop *g_mc_mainloop = NULL; diff --git a/svc/media_controller_cynara.h b/svc/include/media_controller_cynara.h index 743ae82..743ae82 100644 --- a/svc/media_controller_cynara.h +++ b/svc/include/media_controller_cynara.h diff --git a/svc/media_controller_db_util.h b/svc/include/media_controller_db_util.h index 78386ff..1ec5ec5 100755 --- a/svc/media_controller_db_util.h +++ b/svc/include/media_controller_db_util.h @@ -26,7 +26,9 @@ #define MC_DB_TABLE_SERVER_LIST "server_list" #define MC_DB_TABLE_LATEST_SERVER "latest_server" -#define DB_SELECT_ALL_SERVER_LIST_EXCEPT_LATEST "SELECT name FROM SQLITE_MASTER WHERE type='table' AND (name != '%q') AND (name NOT IN (SELECT server_name FROM "MC_DB_TABLE_LATEST_SERVER"))" +#define DB_SELECT_ALL_SERVER_LIST_EXCEPT_LATEST "SELECT name FROM SQLITE_MASTER WHERE type='table' AND (name != '%q') AND (name NOT IN (SELECT server_name FROM "MC_DB_TABLE_LATEST_SERVER"));" +#define DB_SELECT_LATEST_SERVER "SELECT server_name FROM "MC_DB_TABLE_LATEST_SERVER";" +#define DB_UPDATE_STATES "UPDATE '%q' SET server_state=%d, playback_state=%d;" #define SQLITE3_SAFE_FREE(sql_string) {if (sql_string) {sqlite3_free(sql_string); sql_string = NULL; } } #define SQLITE3_FINALIZE(x) {if (x != NULL) sqlite3_finalize(x); } @@ -36,5 +38,6 @@ int mc_db_util_disconnect(void *handle); int mc_db_util_create_tables(void *handle); int mc_db_util_update_db(void *handle, const char *sql_str); int mc_db_util_delete_whole_server_tables(void *handle); +int mc_db_util_init_latest_server_table(void *handle); #endif /*__TIZEN_MEDIA_CONTROLLER_DB_UTIL_H__*/ diff --git a/svc/media_controller_socket.h b/svc/include/media_controller_socket.h index 2a5bba1..2a5bba1 100644 --- a/svc/media_controller_socket.h +++ b/svc/include/media_controller_socket.h diff --git a/svc/media_controller_svc.h b/svc/include/media_controller_svc.h index 709c206..709c206 100755 --- a/svc/media_controller_svc.h +++ b/svc/include/media_controller_svc.h diff --git a/svc/media_controller_db_util.c b/svc/media_controller_db_util.c index 763e021..16bcf51 100644..100755 --- a/svc/media_controller_db_util.c +++ b/svc/media_controller_db_util.c @@ -312,3 +312,60 @@ int mc_db_util_delete_whole_server_tables(void *handle) return ret; } + +int mc_db_util_init_latest_server_table(void *handle) +{ + int ret = MEDIA_CONTROLLER_ERROR_NONE; + sqlite3 *db_handle = (sqlite3 *)handle; + char *sql_str = NULL; + sqlite3_stmt *stmt = NULL; + char *latest_server_name = NULL; + + mc_retvm_if(handle == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL"); + + /* Get latest server name */ + sql_str = sqlite3_mprintf(DB_SELECT_LATEST_SERVER); + mc_retvm_if(!MC_STRING_VALID(sql_str), MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "SQL string is null"); + + ret = sqlite3_prepare_v2(db_handle, sql_str, strlen(sql_str), &stmt, NULL); + if (SQLITE_OK != ret) { + mc_error("prepare error [%s]\n", sqlite3_errmsg(db_handle)); + SQLITE3_SAFE_FREE(sql_str); + return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION; + } + + ret = sqlite3_step(stmt); + while (SQLITE_ROW == ret) { + if (sqlite3_column_int(stmt, 0) == 0) { + mc_debug("latest_server table does not exist"); + SQLITE3_FINALIZE(stmt); + SQLITE3_SAFE_FREE(sql_str); + return MEDIA_CONTROLLER_ERROR_NONE; + } + if (MC_STRING_VALID((const char *)sqlite3_column_text(stmt, 1))) { + latest_server_name = strdup((const char *)sqlite3_column_text(stmt, 1)); + mc_debug("latest_server_name: %s", latest_server_name); + } + ret = sqlite3_step(stmt); + } + + SQLITE3_FINALIZE(stmt); + SQLITE3_SAFE_FREE(sql_str); + + mc_retvm_if(latest_server_name == NULL, MEDIA_CONTROLLER_ERROR_OUT_OF_MEMORY, "latest_server is not exist"); + + /* Update server_state and playbakc_state to 0 */ + sql_str = sqlite3_mprintf(DB_UPDATE_STATES, latest_server_name, MC_SERVER_STATE_NONE, MC_PLAYBACK_STATE_NONE); + mc_retvm_if(!MC_STRING_VALID(sql_str), MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "SQL string is null"); + + ret = mc_db_util_update_db(handle, sql_str); + if (ret != MEDIA_CONTROLLER_ERROR_NONE) { + mc_error("Error mc_db_util_update_db %d", ret); + SQLITE3_SAFE_FREE(sql_str); + return ret; + } + + SQLITE3_SAFE_FREE(sql_str); + + return ret; +} diff --git a/svc/media_controller_svc.c b/svc/media_controller_svc.c index 52f4393..8df46e0 100755 --- a/svc/media_controller_svc.c +++ b/svc/media_controller_svc.c @@ -284,6 +284,11 @@ gboolean mc_svc_thread(void *data) return FALSE; } + /* Initialize latest server table */ + if (mc_db_util_init_latest_server_table(mc_svc_data->db_handle) != MEDIA_CONTROLLER_ERROR_NONE) { + mc_error("mc_db_util_init_latest_server_table failed"); + } + /* Create TCP Socket*/ ret = mc_ipc_create_server_socket(MC_DB_UPDATE_PORT, &sockfd); if (ret != MEDIA_CONTROLLER_ERROR_NONE) { |