Cleanup task_database_handler
This commit is contained in:
parent
7e1639f33b
commit
b286703a81
|
@ -493,11 +493,13 @@ static int task_database_iterate_serial_lookup(
|
||||||
static int task_database_iterate(database_state_handle_t *db_state,
|
static int task_database_iterate(database_state_handle_t *db_state,
|
||||||
database_info_handle_t *db)
|
database_info_handle_t *db)
|
||||||
{
|
{
|
||||||
const char *name = db ? db->list->elems[db->list_ptr].data : NULL;
|
const char *name = NULL;
|
||||||
|
|
||||||
if (!db || !db->list)
|
if (!db || !db->list)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
name = db->list->elems[db->list_ptr].data;
|
||||||
|
|
||||||
if (!name)
|
if (!name)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -538,12 +540,21 @@ static void task_database_cleanup_state(
|
||||||
|
|
||||||
static void task_database_handler(retro_task_t *task)
|
static void task_database_handler(retro_task_t *task)
|
||||||
{
|
{
|
||||||
settings_t *settings = config_get_ptr();
|
const char *name = NULL;
|
||||||
db_handle_t *db = (db_handle_t*)task->state;
|
database_info_handle_t *dbinfo = NULL;
|
||||||
database_info_handle_t *dbinfo = db->handle;
|
database_state_handle_t *dbstate = NULL;
|
||||||
database_state_handle_t *dbstate = &db->state;
|
db_handle_t *db = NULL;
|
||||||
const char *name = dbinfo ?
|
|
||||||
dbinfo->list->elems[dbinfo->list_ptr].data : NULL;
|
if (!task)
|
||||||
|
goto task_finished;
|
||||||
|
|
||||||
|
db = (db_handle_t*)task->state;
|
||||||
|
|
||||||
|
if (!db)
|
||||||
|
goto task_finished;
|
||||||
|
|
||||||
|
dbinfo = db->handle;
|
||||||
|
dbstate = &db->state;
|
||||||
|
|
||||||
if (!dbinfo || task->cancelled)
|
if (!dbinfo || task->cancelled)
|
||||||
goto task_finished;
|
goto task_finished;
|
||||||
|
@ -551,13 +562,17 @@ static void task_database_handler(retro_task_t *task)
|
||||||
switch (dbinfo->status)
|
switch (dbinfo->status)
|
||||||
{
|
{
|
||||||
case DATABASE_STATUS_ITERATE_BEGIN:
|
case DATABASE_STATUS_ITERATE_BEGIN:
|
||||||
if (dbstate && !dbstate->list)
|
{
|
||||||
dbstate->list = dir_list_new_special(
|
settings_t *settings = config_get_ptr();
|
||||||
settings->path.content_database,
|
if (dbstate && !dbstate->list)
|
||||||
DIR_LIST_DATABASES, NULL);
|
dbstate->list = dir_list_new_special(
|
||||||
|
settings->path.content_database,
|
||||||
|
DIR_LIST_DATABASES, NULL);
|
||||||
|
}
|
||||||
dbinfo->status = DATABASE_STATUS_ITERATE_START;
|
dbinfo->status = DATABASE_STATUS_ITERATE_START;
|
||||||
break;
|
break;
|
||||||
case DATABASE_STATUS_ITERATE_START:
|
case DATABASE_STATUS_ITERATE_START:
|
||||||
|
name = dbinfo->list->elems[dbinfo->list_ptr].data;
|
||||||
task_database_cleanup_state(dbstate);
|
task_database_cleanup_state(dbstate);
|
||||||
dbstate->list_index = 0;
|
dbstate->list_index = 0;
|
||||||
dbstate->entry_index = 0;
|
dbstate->entry_index = 0;
|
||||||
|
@ -592,19 +607,27 @@ static void task_database_handler(retro_task_t *task)
|
||||||
|
|
||||||
return;
|
return;
|
||||||
task_finished:
|
task_finished:
|
||||||
task->finished = true;
|
if (task)
|
||||||
|
task->finished = true;
|
||||||
|
|
||||||
if (dbstate->list)
|
if (dbstate)
|
||||||
dir_list_free(dbstate->list);
|
{
|
||||||
|
if (dbstate->list)
|
||||||
|
dir_list_free(dbstate->list);
|
||||||
|
}
|
||||||
|
|
||||||
if (db->state.buf)
|
if (db)
|
||||||
free(db->state.buf);
|
{
|
||||||
|
if (db->state.buf)
|
||||||
|
free(db->state.buf);
|
||||||
|
|
||||||
if (db->handle)
|
if (db->handle)
|
||||||
database_info_free(db->handle);
|
database_info_free(db->handle);
|
||||||
|
free(db);
|
||||||
|
}
|
||||||
|
|
||||||
free(dbinfo);
|
if (dbinfo)
|
||||||
free(db);
|
free(dbinfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool task_push_dbscan(const char *fullpath,
|
bool task_push_dbscan(const char *fullpath,
|
||||||
|
|
Loading…
Reference in New Issue