Add error type when no record 17/208217/4 accepted/tizen/unified/20190620.123706 submit/tizen/20190620.052708
authorMinje Ahn <minje.ahn@samsung.com>
Thu, 20 Jun 2019 04:00:18 +0000 (13:00 +0900)
committerMinje Ahn <minje.ahn@samsung.com>
Thu, 20 Jun 2019 04:20:02 +0000 (13:20 +0900)
Change-Id: I645be2b7262098da16c615f24f383dbc25d63edc
Signed-off-by: Minje Ahn <minje.ahn@samsung.com>
include/media_controller_private.h
packaging/capi-media-controller.spec
src/media_controller_db.c

index 5e73558..54247a0 100644 (file)
@@ -137,7 +137,7 @@ extern "C" {
 #define META_COL "title TEXT, artist TEXT, album TEXT, author TEXT, genre TEXT, duration INTEGER DEFAULT 0, date TEXT, copyright TEXT, description TEXT, track_num TEXT, picture TEXT, season TEXT, episode TEXT, resolution TEXT"
 
 #define SQLITE3_SAFE_FREE(sql_string)  {if (sql_string) { sqlite3_free(sql_string); sql_string = NULL; } }
-#define SQLITE3_FINALIZE(x)    {if (x != NULL) sqlite3_finalize(x); }
+#define SQLITE3_FINALIZE(x)    {if (x != NULL) { sqlite3_finalize(x); x = NULL; } }
 
 /**
 * @ingroup CAPI_MEDIA_CONTROLLER_MODULE
index ac441ba..32161bb 100644 (file)
@@ -1,6 +1,6 @@
 Name:       capi-media-controller
 Summary:    A media controller library in Tizen Native API
-Version:    0.1.90
+Version:    0.2.0
 Release:    1
 Group:      Multimedia/API
 License:    Apache-2.0
index 97b463c..3dff395 100644 (file)
@@ -43,7 +43,8 @@ static int __mc_db_get_record(sqlite3 *handle, char *sql_str, sqlite3_stmt **stm
        if (sqlite3_step(statement) != SQLITE_ROW) {
                mc_error("end of row [%s]", sqlite3_errmsg(handle));
                SQLITE3_FINALIZE(statement);
-               return MEDIA_CONTROLLER_ERROR_INVALID_OPERATION;
+               /* Error for server metadata. So, other functions need to change TIZEN_ERROR_NO_DATA to MEDIA_CONTROLLER_ERROR_INVALID_OPERATION. */
+               return TIZEN_ERROR_NO_DATA;
        }
 
        *stmt = statement;
@@ -234,7 +235,7 @@ int mc_db_get_playback_info(sqlite3 *handle, const char *server_name, mc_playbac
                MC_DB_TABLE_SERVER_INFO, server_name);
 
        ret = __mc_db_get_record(handle, sql_str, &stmt);
-       mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "__mc_db_get_record failed [%d]", ret);
+       mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "__mc_db_get_record failed [%d]", ret);
 
        _playback = (media_controller_playback_s *)calloc(1, sizeof(media_controller_playback_s));
        if (!_playback) {
@@ -267,20 +268,22 @@ static int __mc_db_get_metadata(sqlite3_stmt *stmt, int col, mc_metadata_h *meta
        _metadata = (media_controller_metadata_s *)calloc(1, sizeof(media_controller_metadata_s));
        mc_retvm_if(_metadata == NULL, MEDIA_CONTROLLER_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
 
-       _metadata->title = g_strdup((const char *)sqlite3_column_text(stmt, col++));
-       _metadata->artist = g_strdup((const char *)sqlite3_column_text(stmt, col++));
-       _metadata->album = g_strdup((const char *)sqlite3_column_text(stmt, col++));
-       _metadata->author = g_strdup((const char *)sqlite3_column_text(stmt, col++));
-       _metadata->genre = g_strdup((const char *)sqlite3_column_text(stmt, col++));
-       _metadata->duration = g_strdup((const char *)sqlite3_column_text(stmt, col++));
-       _metadata->date = g_strdup((const char *)sqlite3_column_text(stmt, col++));
-       _metadata->copyright = g_strdup((const char *)sqlite3_column_text(stmt, col++));
-       _metadata->description = g_strdup((const char *)sqlite3_column_text(stmt, col++));
-       _metadata->track_num = g_strdup((const char *)sqlite3_column_text(stmt, col++));
-       _metadata->picture = g_strdup((const char *)sqlite3_column_text(stmt, col++));
-       _metadata->season = g_strdup((const char *)sqlite3_column_text(stmt, col++));
-       _metadata->episode = g_strdup((const char *)sqlite3_column_text(stmt, col++));
-       _metadata->resolution = g_strdup((const char *)sqlite3_column_text(stmt, col++));
+       if (stmt != NULL) {
+               _metadata->title = g_strdup((const char *)sqlite3_column_text(stmt, col++));
+               _metadata->artist = g_strdup((const char *)sqlite3_column_text(stmt, col++));
+               _metadata->album = g_strdup((const char *)sqlite3_column_text(stmt, col++));
+               _metadata->author = g_strdup((const char *)sqlite3_column_text(stmt, col++));
+               _metadata->genre = g_strdup((const char *)sqlite3_column_text(stmt, col++));
+               _metadata->duration = g_strdup((const char *)sqlite3_column_text(stmt, col++));
+               _metadata->date = g_strdup((const char *)sqlite3_column_text(stmt, col++));
+               _metadata->copyright = g_strdup((const char *)sqlite3_column_text(stmt, col++));
+               _metadata->description = g_strdup((const char *)sqlite3_column_text(stmt, col++));
+               _metadata->track_num = g_strdup((const char *)sqlite3_column_text(stmt, col++));
+               _metadata->picture = g_strdup((const char *)sqlite3_column_text(stmt, col++));
+               _metadata->season = g_strdup((const char *)sqlite3_column_text(stmt, col++));
+               _metadata->episode = g_strdup((const char *)sqlite3_column_text(stmt, col++));
+               _metadata->resolution = g_strdup((const char *)sqlite3_column_text(stmt, col++));
+       }
 
        *metadata = (mc_metadata_h)_metadata;
 
@@ -300,7 +303,7 @@ int mc_db_get_metadata_info(sqlite3 *handle, const char *server_name, mc_metadat
        sql_str = sqlite3_mprintf("SELECT %s FROM %q WHERE name=%Q", META_LIST, MC_DB_TABLE_LATEST_META, server_name);
 
        ret = __mc_db_get_record(handle, sql_str, &stmt);
-       mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "__mc_db_get_record failed [%d]", ret);
+       mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE && ret != TIZEN_ERROR_NO_DATA, ret, "__mc_db_get_record failed [%d]", ret);
 
        ret = __mc_db_get_metadata(stmt, 0, metadata);
        SQLITE3_FINALIZE(stmt);
@@ -321,7 +324,7 @@ int mc_db_get_shuffle_mode(sqlite3 *handle, const char *server_name, mc_shuffle_
        sql_str = sqlite3_mprintf("SELECT shuffle_mode FROM %q WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, server_name);
 
        ret = __mc_db_get_record(handle, sql_str, &stmt);
-       mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "__mc_db_get_record failed [%d]", ret);
+       mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "__mc_db_get_record failed [%d]", ret);
 
        *mode = sqlite3_column_int(stmt, 0);
        SQLITE3_FINALIZE(stmt);
@@ -342,7 +345,7 @@ int mc_db_get_repeat_mode(sqlite3 *handle, const char *server_name, mc_repeat_mo
        sql_str = sqlite3_mprintf("SELECT repeat_mode FROM %q WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, server_name);
 
        ret = __mc_db_get_record(handle, sql_str, &stmt);
-       mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "__mc_db_get_record failed [%d]", ret);
+       mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "__mc_db_get_record failed [%d]", ret);
 
        *mode = sqlite3_column_int(stmt, 0);
        SQLITE3_FINALIZE(stmt);
@@ -363,7 +366,7 @@ int mc_db_get_icon_uri(sqlite3 *handle, const char *server_name, char **uri)
        sql_str = sqlite3_mprintf("SELECT icon_uri FROM %q WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, server_name);
 
        ret = __mc_db_get_record(handle, sql_str, &stmt);
-       mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "__mc_db_get_record failed [%d]", ret);
+       mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "__mc_db_get_record failed [%d]", ret);
 
        *uri = g_strdup((const char *)sqlite3_column_text(stmt, 0));
        SQLITE3_FINALIZE(stmt);
@@ -385,7 +388,7 @@ static int __mc_db_get_ability(sqlite3 *handle, const char *server_name, unsigne
        sql_str = sqlite3_mprintf("SELECT ability_decided, ability_supported FROM %q WHERE name=%Q", MC_DB_TABLE_SERVER_INFO, server_name);
 
        ret = __mc_db_get_record(handle, sql_str, &stmt);
-       mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, ret, "__mc_db_get_record failed [%d]", ret);
+       mc_retvm_if(ret != MEDIA_CONTROLLER_ERROR_NONE, MEDIA_CONTROLLER_ERROR_INVALID_OPERATION, "__mc_db_get_record failed [%d]", ret);
 
        *decided = (unsigned long long)sqlite3_column_int64(stmt, 0);
        *supported = (unsigned long long)sqlite3_column_int64(stmt, 1);