Fix to update latest_server table only if the new playback server is not same as... 22/206222/1
authorhj kim <backto.kim@samsung.com>
Wed, 15 May 2019 07:46:29 +0000 (16:46 +0900)
committerhj kim <backto.kim@samsung.com>
Wed, 15 May 2019 07:46:29 +0000 (16:46 +0900)
Change-Id: I1c64ff2dc96169f3d1b92978ba66843a1096b28a

include/media_controller_db.h
src/media_controller_db.c
src/media_controller_server.c

index 99294ed..6946079 100644 (file)
@@ -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,
index 72986b4..e4756d7 100644 (file)
@@ -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;
index 8430ebd..9119bbc 100644 (file)
@@ -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);