From c596e36ac91ce6142dec441276712b4cf76e7047 Mon Sep 17 00:00:00 2001 From: hj kim Date: Wed, 15 May 2019 16:46:29 +0900 Subject: [PATCH] Fix to update latest_server table only if the new playback server is not same as the latest_server stored Change-Id: I1c64ff2dc96169f3d1b92978ba66843a1096b28a --- include/media_controller_db.h | 1 + src/media_controller_db.c | 25 +++++++++++++++++++++++++ src/media_controller_server.c | 6 ++++-- 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/include/media_controller_db.h b/include/media_controller_db.h index 99294ed..6946079 100644 --- a/include/media_controller_db.h +++ b/include/media_controller_db.h @@ -23,6 +23,7 @@ gboolean mc_db_is_server_table_exist(void *handle, const char *server_name); gboolean _mc_db_is_activated_client(void *handle, const char *client_name); gboolean _mc_db_is_activated_server(void *handle, const char *server_name); +gboolean _mc_db_is_latest_server(void *handle, const char *server_name); int mc_db_update_playback_info(const char *table_name, const media_controller_playback_s playback); int mc_db_update_whole_metadata(const char *server_name, const char *title, const char *artist, const char *album, const char *author, const char *genre, const char *duration, const char *date, diff --git a/src/media_controller_db.c b/src/media_controller_db.c index 72986b4..e4756d7 100644 --- a/src/media_controller_db.c +++ b/src/media_controller_db.c @@ -873,6 +873,31 @@ gboolean _mc_db_is_activated_server(void *handle, const char *server_name) return TRUE; } +gboolean _mc_db_is_latest_server(void *handle, const char *server_name) +{ + char *sql_str = NULL; + int count = 0; + + mc_retvm_if(!handle, FALSE, "Handle is NULL"); + mc_retvm_if(!server_name, FALSE, "server_name is NULL"); + + mc_secure_debug("server name [%s]", server_name); + + sql_str = sqlite3_mprintf("SELECT COUNT(*) FROM '%q' WHERE server_name='%q'", MC_DB_TABLE_LATEST_SERVER, server_name); + mc_retvm_if(!MC_STRING_VALID(sql_str), FALSE, "SQL string is null"); + + count = __mc_db_get_count(handle, sql_str); + SQLITE3_SAFE_FREE(sql_str); + + if (count <= 0) { + mc_secure_debug("[%s] is not latest", server_name); + return FALSE; + } + + return TRUE; +} + + int mc_db_foreach_server_list(void *handle, mc_activated_server_cb callback, void *user_data) { int ret = MEDIA_CONTROLLER_ERROR_NONE; diff --git a/src/media_controller_server.c b/src/media_controller_server.c index 8430ebd..9119bbc 100644 --- a/src/media_controller_server.c +++ b/src/media_controller_server.c @@ -716,8 +716,10 @@ int mc_server_update_playback_info(mc_server_h server) } if (mc_server->playback.state == MC_PLAYBACK_STATE_PLAYING) { - ret = mc_db_update_latest_server_table(mc_server->server_name); - mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "fail mc_db_update_latest_server_table [%d]", ret); + if(!_mc_db_is_latest_server(mc_server->db_handle, mc_server->server_name)) { + ret = mc_db_update_latest_server_table(mc_server->server_name); + mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "fail mc_db_update_latest_server_table [%d]", ret); + } } ret = __mc_server_send_message(mc_server, MC_DBUS_UPDATE_INTERFACE, MC_DBUS_SIGNAL_NAME_PLAY_BACK, 0, 0, NULL); -- 2.7.4