From: hj kim Date: Thu, 15 Mar 2018 09:56:40 +0000 (+0900) Subject: [MPR-1333]Keep latest server's metadata. and bug fix of server/playback state when... X-Git-Tag: submit/tizen/20180403.050213~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=472fcd8519b4eed4752bf48e461c75a8bb786a6f;p=platform%2Fcore%2Fapi%2Fmedia-controller.git [MPR-1333]Keep latest server's metadata. and bug fix of server/playback state when launch and destroy Change-Id: Id5f7b721b6ec451df673bfb67cca1f191b4c5c09 --- diff --git a/include/media_controller_db.h b/include/media_controller_db.h index 3ffaf14..81a05d3 100755 --- a/include/media_controller_db.h +++ b/include/media_controller_db.h @@ -88,6 +88,7 @@ int mc_db_delete_server_address_from_table(void *db_handle, const char *table_na int mc_db_foreach_server_list(void *handle, mc_activated_server_cb callback, void *user_data); int mc_db_update_server_state(void *handle, const char *server_name, mc_server_state_e server_state); +int mc_db_update_server_and_playback_state(void *handle, const char *server_name, mc_server_state_e server_state, mc_playback_states_e playback_state); int mc_db_update_latest_server_table(void *handle, const char *server_name); diff --git a/src/media_controller_db.c b/src/media_controller_db.c index 7f8232f..c6eb60b 100755 --- a/src/media_controller_db.c +++ b/src/media_controller_db.c @@ -689,6 +689,22 @@ int mc_db_update_server_state(void *handle, const char *server_name, mc_server_s return ret; } +int mc_db_update_server_and_playback_state(void *handle, const char *server_name, mc_server_state_e server_state, mc_playback_states_e playback_state) +{ + int ret = MEDIA_CONTROLLER_ERROR_NONE; + char *sql_str = NULL; + + mc_retvm_if(handle == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "Handle is NULL"); + mc_retvm_if(server_name == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "server_name is NULL"); + + sql_str = sqlite3_mprintf("UPDATE '%q' SET server_state=%d, playback_state=%d;", server_name, server_state, playback_state); + + ret = __mc_db_update_db(handle, sql_str); + + SQLITE3_SAFE_FREE(sql_str); + + return ret; +} int mc_db_update_latest_server_table(void *handle, const char *server_name) { diff --git a/src/media_controller_ipc.c b/src/media_controller_ipc.c index 5bde8e9..02931b7 100755 --- a/src/media_controller_ipc.c +++ b/src/media_controller_ipc.c @@ -325,7 +325,7 @@ int mc_ipc_send_message_to_server(mc_msg_type_e msg_type, const int type, const return MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER; } - mc_error("type [%d], message [%s]", type, request_msg); + mc_info("type [%d], message [%s]", type, request_msg); mc_comm_msg_s send_msg; memset((void *)&send_msg, 0, sizeof(mc_comm_msg_s)); diff --git a/src/media_controller_server.c b/src/media_controller_server.c index b023f45..326ad89 100755 --- a/src/media_controller_server.c +++ b/src/media_controller_server.c @@ -832,6 +832,7 @@ int mc_server_create(mc_server_h *server) int ret = MEDIA_CONTROLLER_ERROR_NONE; media_controller_server_s *mc_server = NULL; bool table_exist = FALSE; + bool is_latest = FALSE; mc_debug_fenter(); @@ -858,7 +859,25 @@ int mc_server_create(mc_server_h *server) return ret; } - if (table_exist) { + ret = __mc_server_current_is_latest(mc_server, &is_latest); + + if (table_exist && is_latest) { + //To keep latest server's metadata + ret = mc_db_delete_server_address_from_table(mc_server->db_handle, MC_DB_TABLE_SERVER_LIST, mc_server->server_name); + if (ret != MEDIA_CONTROLLER_ERROR_NONE) { + mc_error("mc_db_delete_server_address_from_table failed [%d]", ret); + __mc_server_destoy(mc_server); + return ret; + } + + ret = mc_db_update_server_and_playback_state(mc_server->db_handle, mc_server->server_name, MC_SERVER_STATE_ACTIVATE, MC_PLAYBACK_STATE_STOPPED); + if (ret != MEDIA_CONTROLLER_ERROR_NONE) { + mc_error("mc_db_update_server_and_playback_state failed [%d]", ret); + __mc_server_destoy(mc_server); + return ret; + } + + } else if (table_exist) { ret = mc_db_delete_server_table(mc_server->db_handle, mc_server->server_name); if (ret != MEDIA_CONTROLLER_ERROR_NONE) { mc_error("mc_db_delete_server_table failed [%d]", ret); @@ -873,18 +892,20 @@ int mc_server_create(mc_server_h *server) } } - ret = mc_db_create_server_table(mc_server->db_handle, mc_server->server_name); - if (ret != MEDIA_CONTROLLER_ERROR_NONE) { - mc_error("fail mc_db_clear_table [%d]", ret); - __mc_server_destoy(mc_server); - return ret; - } + if (!(table_exist && is_latest)) { + ret = mc_db_create_server_table(mc_server->db_handle, mc_server->server_name); + if (ret != MEDIA_CONTROLLER_ERROR_NONE) { + mc_error("fail mc_db_clear_table [%d]", ret); + __mc_server_destoy(mc_server); + return ret; + } - ret = mc_db_insert_server_address_into_table(mc_server->db_handle, mc_server->server_name, mc_server->server_name); - if (ret != MEDIA_CONTROLLER_ERROR_NONE) { - mc_error("fail mc_db_insert_server_address_into_table [%d]", ret); - __mc_server_destoy(mc_server); - return ret; + ret = mc_db_insert_server_address_into_table(mc_server->db_handle, mc_server->server_name, mc_server->server_name); + if (ret != MEDIA_CONTROLLER_ERROR_NONE) { + mc_error("fail mc_db_insert_server_address_into_table [%d]", ret); + __mc_server_destoy(mc_server); + return ret; + } } ret = mc_db_insert_server_address_into_table(mc_server->db_handle, MC_DB_TABLE_SERVER_LIST, mc_server->server_name); @@ -925,9 +946,9 @@ int mc_server_destroy(mc_server_h server) ret = __mc_server_current_is_latest(mc_server, &is_latest); if (is_latest) { - ret = mc_db_update_server_state(mc_server->db_handle, mc_server->server_name, MC_SERVER_STATE_DEACTIVATE); + ret = mc_db_update_server_and_playback_state(mc_server->db_handle, mc_server->server_name, MC_SERVER_STATE_DEACTIVATE, MC_PLAYBACK_STATE_STOPPED); if (ret != MEDIA_CONTROLLER_ERROR_NONE) - mc_error("fail mc_db_delete_server_table [%d]", ret); + mc_error("mc_db_update_server_and_playback_state failed [%d]", ret); } else { ret = mc_db_delete_server_table(mc_server->db_handle, mc_server->server_name); if (ret != MEDIA_CONTROLLER_ERROR_NONE) diff --git a/svc/media_controller_db_util.c b/svc/media_controller_db_util.c index 157be4f..ec9f0cb 100755 --- a/svc/media_controller_db_util.c +++ b/svc/media_controller_db_util.c @@ -126,9 +126,7 @@ static int __mc_create_server_list_table(sqlite3 *handle) int ret = MEDIA_CONTROLLER_ERROR_NONE; char *sql_str = NULL; - sql_str = sqlite3_mprintf("CREATE TABLE IF NOT EXISTS %s (\ - server_name TEXT PRIMARY KEY);", - MC_DB_TABLE_SERVER_LIST); + sql_str = sqlite3_mprintf("CREATE TABLE IF NOT EXISTS %s (server_name TEXT PRIMARY KEY);", MC_DB_TABLE_SERVER_LIST); ret = mc_db_util_update_db(handle, sql_str); @@ -366,8 +364,8 @@ int mc_db_util_init_latest_server_table(void *handle) 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); + /* Update server_state and playback_state to 0 */ + sql_str = sqlite3_mprintf(DB_UPDATE_STATES, latest_server_name, MC_SERVER_STATE_DEACTIVATE, MC_PLAYBACK_STATE_STOPPED); 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);