From 41d79037c30803cd7e837a6546a3729048dd41af Mon Sep 17 00:00:00 2001 From: hj kim Date: Mon, 28 May 2018 17:21:48 +0900 Subject: [PATCH] Unify playlist remove and update to avoid timing issue Change-Id: I2e5f9c61bf024fd6e765de1c3466b8ee153ad0b2 --- packaging/capi-media-controller.spec | 2 +- src/media_controller_server.c | 8 ++++++-- svc/media_controller_db_util.c | 5 +++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/packaging/capi-media-controller.spec b/packaging/capi-media-controller.spec index 14e7450..b1eed5b 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.58 +Version: 0.1.59 Release: 1 Group: Multimedia/API License: Apache-2.0 diff --git a/src/media_controller_server.c b/src/media_controller_server.c index cbaeee1..c88b101 100755 --- a/src/media_controller_server.c +++ b/src/media_controller_server.c @@ -638,12 +638,16 @@ int mc_server_update_playlist(mc_server_h server, mc_playlist_update_mode_e mode mc_retvm_if(mc_server == NULL, MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid server"); mc_retvm_if(!MC_STRING_VALID(playlist_name), MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER, "invalid playlist_name"); - ret = mc_db_remove_playlist(mc_server->db_handle, mc_server->server_name); - mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "fail to mc_db_remove_playlist"); if (mode == MC_PLAYLIST_UPDATED) { ret = mc_db_update_playlist(mc_server->db_handle, mc_server->server_name, playlist_name, data); mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "fail to mc_db_update_playlist"); + } else if (mode == MC_PLAYLIST_REMOVED) { + ret = mc_db_remove_playlist(mc_server->db_handle, mc_server->server_name); + mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "fail to mc_db_remove_playlist"); + } else { + mc_error("Wrong mode [%d]", mode); + return MEDIA_CONTROLLER_ERROR_INVALID_PARAMETER; } ret = __mc_server_send_message(mc_server, MC_DBUS_UPDATE_INTERFACE, MC_DBUS_SIGNAL_NAME_PLAYLIST, mode, 0, playlist_name); diff --git a/svc/media_controller_db_util.c b/svc/media_controller_db_util.c index 8f7fbbe..70bdb97 100755 --- a/svc/media_controller_db_util.c +++ b/svc/media_controller_db_util.c @@ -541,8 +541,9 @@ int mc_db_parse_and_update_db(const char *data, int data_size, char **result_que mc_safe_strtoi(params[4], &i_value); - sql_str = sqlite3_mprintf("INSERT INTO '%q' (server_name, playlist_name, data, data_size) VALUES (%Q, %Q, %Q, %d);", MC_DB_TABLE_PLAYLIST, - params[1], params[2], params[3], i_value); + sql_str = sqlite3_mprintf("DELETE FROM '%q' WHERE server_name='%q';INSERT INTO '%q' (server_name, playlist_name, data, data_size) VALUES (%Q, %Q, %Q, %d);", + MC_DB_TABLE_PLAYLIST, params[1], + MC_DB_TABLE_PLAYLIST, params[1], params[2], params[3], i_value); } else if (strncmp(MC_DB_CMD_REMOVE_SERVER_LIST, params[0], strlen(MC_DB_CMD_REMOVE_SERVER_LIST)) == 0) { sql_str = sqlite3_mprintf("DELETE FROM %q WHERE server_name = '%q';", MC_DB_TABLE_SERVER_LIST, params[1]); -- 2.7.4