diff --git a/menu/menu_entry.c b/menu/menu_entry.c index ed5bbb2694..f24e5da720 100644 --- a/menu/menu_entry.c +++ b/menu/menu_entry.c @@ -516,12 +516,8 @@ int menu_entry_action(menu_entry_t *entry, unsigned i, enum menu_action action) break; case MENU_ACTION_TEST: -#if 0 - menu->db = database_info_init("/home/squarepusher/roms", DATABASE_TYPE_RDL_WRITE); - - if (!menu->db) - ret = -1; -#endif + rarch_main_data_msg_queue_push(DATA_TYPE_DB, "", "cb_db_scan", 0, 1, + true); break; default: diff --git a/runloop_data.h b/runloop_data.h index 507c307295..d4f9ab6a57 100644 --- a/runloop_data.h +++ b/runloop_data.h @@ -40,12 +40,8 @@ enum runloop_data_type DATA_TYPE_FILE, DATA_TYPE_IMAGE, DATA_TYPE_HTTP, -#ifdef HAVE_OVERLAY DATA_TYPE_OVERLAY, -#endif -#ifdef HAVE_LIBRETRODB DATA_TYPE_DB, -#endif }; #ifdef HAVE_NETWORKING diff --git a/tasks/task_database.c b/tasks/task_database.c index e08a2de981..5639bd0497 100644 --- a/tasks/task_database.c +++ b/tasks/task_database.c @@ -117,13 +117,34 @@ static int database_info_iterate(database_info_handle_t *db) return 0; } +static int database_info_poll(db_handle_t *db) +{ + const char *path = msg_queue_pull(db->msg_queue); + + if (!path) + return -1; + + RARCH_LOG("Gets here.\n"); + + db->handle = database_info_init("/home/squarepusher/roms", DATABASE_TYPE_ITERATE); + + return 0; +} + void rarch_main_data_db_iterate(bool is_thread, void *data) { data_runloop_t *runloop = (data_runloop_t*)data; database_info_handle_t *db = runloop ? runloop->db.handle : NULL; if (!db || !runloop) + { + if (database_info_poll(&runloop->db) != -1) + { + if (runloop->db.handle) + runloop->db.handle->status = DATABASE_STATUS_ITERATE; + } return; + } switch (db->status) { @@ -136,6 +157,8 @@ void rarch_main_data_db_iterate(bool is_thread, void *data) break; default: case DATABASE_STATUS_NONE: + if (database_info_poll(&runloop->db) != -1) + db->status = DATABASE_STATUS_ITERATE; break; } }