Unify playlist remove and update to avoid timing issue 15/180315/1
authorhj kim <backto.kim@samsung.com>
Mon, 28 May 2018 08:21:48 +0000 (17:21 +0900)
committerhj kim <backto.kim@samsung.com>
Mon, 28 May 2018 08:21:48 +0000 (17:21 +0900)
Change-Id: I2e5f9c61bf024fd6e765de1c3466b8ee153ad0b2

packaging/capi-media-controller.spec
src/media_controller_server.c
svc/media_controller_db_util.c

index 14e7450..b1eed5b 100755 (executable)
@@ -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
index cbaeee1..c88b101 100755 (executable)
@@ -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);
index 8f7fbbe..70bdb97 100755 (executable)
@@ -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]);