diff --git a/database_info.h b/database_info.h index 27d314bf28..df1650eb1d 100644 --- a/database_info.h +++ b/database_info.h @@ -31,6 +31,7 @@ enum database_status { DATABASE_STATUS_NONE = 0, DATABASE_STATUS_ITERATE, + DATABASE_STATUS_ITERATE_BEGIN, DATABASE_STATUS_ITERATE_START, DATABASE_STATUS_ITERATE_NEXT, DATABASE_STATUS_FREE, diff --git a/dir_list_special.c b/dir_list_special.c index 5bcbcfbc8d..9fdcb9c040 100644 --- a/dir_list_special.c +++ b/dir_list_special.c @@ -45,8 +45,12 @@ struct string_list *dir_list_new_special(const char *input_dir, enum dir_list_ty dir = settings->video.shader_dir; exts = "cg|cgp|glsl|glslp"; break; + case DIR_LIST_DATABASES: + dir = settings->content_database; + exts = "rdb"; + break; case DIR_LIST_PLAIN: - dir = input_dir; + dir = input_dir; exts = NULL; break; case DIR_LIST_NONE: diff --git a/dir_list_special.h b/dir_list_special.h index 202dd9a8d8..2c7e4b48b8 100644 --- a/dir_list_special.h +++ b/dir_list_special.h @@ -29,6 +29,7 @@ enum dir_list_type DIR_LIST_NONE = 0, DIR_LIST_CORES, DIR_LIST_CORE_INFO, + DIR_LIST_DATABASES, DIR_LIST_PLAIN, DIR_LIST_SHADERS, }; diff --git a/tasks/task_database.c b/tasks/task_database.c index 7781732d92..785645cce5 100644 --- a/tasks/task_database.c +++ b/tasks/task_database.c @@ -178,6 +178,9 @@ void rarch_main_data_db_iterate(bool is_thread, void *data) switch (db->status) { + case DATABASE_STATUS_ITERATE_BEGIN: + db->status = DATABASE_STATUS_ITERATE_START; + break; case DATABASE_STATUS_ITERATE_START: rarch_main_data_db_cleanup_state(data); database_info_iterate_start(db, name); @@ -215,7 +218,7 @@ do_poll: if (database_info_poll(&runloop->db) != -1) { if (runloop->db.handle) - runloop->db.handle->status = DATABASE_STATUS_ITERATE_START; + runloop->db.handle->status = DATABASE_STATUS_ITERATE_BEGIN; } } #endif