Rewrite libretro-common task_queue, use flags
This commit is contained in:
parent
36bcbefc96
commit
f4ed638347
|
@ -2854,7 +2854,7 @@ static void rcheevos_start_session_async(retro_task_t* task)
|
||||||
else if (rcheevos_locals.hardcore_active)
|
else if (rcheevos_locals.hardcore_active)
|
||||||
runloop_state_get_ptr()->flags &= ~RUNLOOP_FLAG_SLOWMOTION;
|
runloop_state_get_ptr()->flags &= ~RUNLOOP_FLAG_SLOWMOTION;
|
||||||
|
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
|
|
||||||
if (rcheevos_end_load_state() == 0)
|
if (rcheevos_end_load_state() == 0)
|
||||||
rcheevos_fetch_badges();
|
rcheevos_fetch_badges();
|
||||||
|
@ -3585,7 +3585,7 @@ static void rcheevos_validate_initial_disc_handler(retro_task_t* task)
|
||||||
}
|
}
|
||||||
|
|
||||||
free(new_disc_path);
|
free(new_disc_path);
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void rcheevos_change_disc(const char* new_disc_path, bool initial_disc)
|
void rcheevos_change_disc(const char* new_disc_path, bool initial_disc)
|
||||||
|
|
|
@ -762,7 +762,7 @@ static void rcheevos_async_retry_request(retro_task_t* task)
|
||||||
task->user_data;
|
task->user_data;
|
||||||
|
|
||||||
/* the timer task has done its job. let it dispose itself */
|
/* the timer task has done its job. let it dispose itself */
|
||||||
task_set_finished(task, 1);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
|
|
||||||
/* start a new task for the HTTP call */
|
/* start a new task for the HTTP call */
|
||||||
rcheevos_async_begin_http_request(request);
|
rcheevos_async_begin_http_request(request);
|
||||||
|
@ -801,12 +801,12 @@ static bool rcheevos_async_request_failed(rcheevos_async_io_request* request, co
|
||||||
/* timer will ping again */
|
/* timer will ping again */
|
||||||
case CHEEVOS_ASYNC_RICHPRESENCE:
|
case CHEEVOS_ASYNC_RICHPRESENCE:
|
||||||
/* fallback to the placeholder image */
|
/* fallback to the placeholder image */
|
||||||
case CHEEVOS_ASYNC_FETCH_BADGE:
|
case CHEEVOS_ASYNC_FETCH_BADGE:
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
case CHEEVOS_ASYNC_RESOLVE_HASH:
|
case CHEEVOS_ASYNC_RESOLVE_HASH:
|
||||||
case CHEEVOS_ASYNC_LOGIN:
|
case CHEEVOS_ASYNC_LOGIN:
|
||||||
/* make a maximum of four attempts
|
/* make a maximum of four attempts
|
||||||
(0ms -> 250ms -> 500ms -> 1s) */
|
(0ms -> 250ms -> 500ms -> 1s) */
|
||||||
if (request->attempt_count == 3)
|
if (request->attempt_count == 3)
|
||||||
return false;
|
return false;
|
||||||
|
@ -878,7 +878,7 @@ static void rcheevos_async_http_task_callback(
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* indicate success unless handler provides error */
|
/* indicate success unless handler provides error */
|
||||||
buffer[0] = '\0';
|
buffer[0] = '\0';
|
||||||
|
|
||||||
/* Call appropriate handler to process the response */
|
/* Call appropriate handler to process the response */
|
||||||
/* NOTE: data->data is not null-terminated. Most handlers assume the
|
/* NOTE: data->data is not null-terminated. Most handlers assume the
|
||||||
|
@ -1013,7 +1013,7 @@ static void rcheevos_async_begin_request(
|
||||||
rcheevos_async_begin_http_request(request);
|
rcheevos_async_begin_http_request(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool rcheevos_async_succeeded(int result,
|
static bool rcheevos_async_succeeded(int result,
|
||||||
const rc_api_response_t* response, char buffer[],
|
const rc_api_response_t* response, char buffer[],
|
||||||
size_t buffer_size)
|
size_t buffer_size)
|
||||||
{
|
{
|
||||||
|
@ -1212,7 +1212,7 @@ static void rcheevos_client_copy_achievements(
|
||||||
rcheevos_racheevo_t *achievement;
|
rcheevos_racheevo_t *achievement;
|
||||||
rcheevos_locals_t *rcheevos_locals = get_rcheevos_locals();
|
rcheevos_locals_t *rcheevos_locals = get_rcheevos_locals();
|
||||||
const settings_t *settings = config_get_ptr();
|
const settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
rcheevos_locals->game.achievements = (rcheevos_racheevo_t*)
|
rcheevos_locals->game.achievements = (rcheevos_racheevo_t*)
|
||||||
calloc(runtime_data->game_data.num_achievements,
|
calloc(runtime_data->game_data.num_achievements,
|
||||||
sizeof(rcheevos_racheevo_t));
|
sizeof(rcheevos_racheevo_t));
|
||||||
|
@ -1253,13 +1253,13 @@ static void rcheevos_client_copy_achievements(
|
||||||
achievement->active = RCHEEVOS_ACTIVE_SOFTCORE
|
achievement->active = RCHEEVOS_ACTIVE_SOFTCORE
|
||||||
| RCHEEVOS_ACTIVE_HARDCORE;
|
| RCHEEVOS_ACTIVE_HARDCORE;
|
||||||
|
|
||||||
for (j = 0; j <
|
for (j = 0; j <
|
||||||
runtime_data->hardcore_unlocks.num_achievement_ids; ++j)
|
runtime_data->hardcore_unlocks.num_achievement_ids; ++j)
|
||||||
{
|
{
|
||||||
if (runtime_data->hardcore_unlocks.achievement_ids[j]
|
if (runtime_data->hardcore_unlocks.achievement_ids[j]
|
||||||
== definition->id)
|
== definition->id)
|
||||||
{
|
{
|
||||||
achievement->active &= ~(RCHEEVOS_ACTIVE_HARDCORE
|
achievement->active &= ~(RCHEEVOS_ACTIVE_HARDCORE
|
||||||
| RCHEEVOS_ACTIVE_SOFTCORE);
|
| RCHEEVOS_ACTIVE_SOFTCORE);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1267,7 +1267,7 @@ static void rcheevos_client_copy_achievements(
|
||||||
|
|
||||||
if ((achievement->active & RCHEEVOS_ACTIVE_SOFTCORE) != 0)
|
if ((achievement->active & RCHEEVOS_ACTIVE_SOFTCORE) != 0)
|
||||||
{
|
{
|
||||||
for (j = 0; j <
|
for (j = 0; j <
|
||||||
runtime_data->non_hardcore_unlocks.num_achievement_ids;
|
runtime_data->non_hardcore_unlocks.num_achievement_ids;
|
||||||
++j)
|
++j)
|
||||||
{
|
{
|
||||||
|
@ -1286,19 +1286,19 @@ static void rcheevos_client_copy_achievements(
|
||||||
achievement->badge = strdup(definition->badge_name);
|
achievement->badge = strdup(definition->badge_name);
|
||||||
achievement->points = definition->points;
|
achievement->points = definition->points;
|
||||||
|
|
||||||
/* If an achievement has been fully unlocked,
|
/* If an achievement has been fully unlocked,
|
||||||
* we don't need to keep the definition around
|
* we don't need to keep the definition around
|
||||||
* as it won't be reactivated. Otherwise,
|
* as it won't be reactivated. Otherwise,
|
||||||
* we do have to keep a copy of it. */
|
* we do have to keep a copy of it. */
|
||||||
if ((achievement->active & (
|
if ((achievement->active & (
|
||||||
RCHEEVOS_ACTIVE_HARDCORE
|
RCHEEVOS_ACTIVE_HARDCORE
|
||||||
| RCHEEVOS_ACTIVE_SOFTCORE)) != 0)
|
| RCHEEVOS_ACTIVE_SOFTCORE)) != 0)
|
||||||
achievement->memaddr = strdup(definition->definition);
|
achievement->memaddr = strdup(definition->definition);
|
||||||
|
|
||||||
++achievement;
|
++achievement;
|
||||||
}
|
}
|
||||||
|
|
||||||
rcheevos_locals->game.achievement_count = (unsigned)(achievement
|
rcheevos_locals->game.achievement_count = (unsigned)(achievement
|
||||||
- rcheevos_locals->game.achievements);
|
- rcheevos_locals->game.achievements);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1313,7 +1313,7 @@ static void rcheevos_client_copy_leaderboards(
|
||||||
rcheevos_locals->game.leaderboards = (rcheevos_ralboard_t*)
|
rcheevos_locals->game.leaderboards = (rcheevos_ralboard_t*)
|
||||||
calloc(runtime_data->game_data.num_leaderboards,
|
calloc(runtime_data->game_data.num_leaderboards,
|
||||||
sizeof(rcheevos_ralboard_t));
|
sizeof(rcheevos_ralboard_t));
|
||||||
rcheevos_locals->game.leaderboard_count =
|
rcheevos_locals->game.leaderboard_count =
|
||||||
runtime_data->game_data.num_leaderboards;
|
runtime_data->game_data.num_leaderboards;
|
||||||
|
|
||||||
leaderboard = rcheevos_locals->game.leaderboards;
|
leaderboard = rcheevos_locals->game.leaderboards;
|
||||||
|
@ -1341,9 +1341,9 @@ static void rcheevos_client_initialize_runtime_rich_presence(
|
||||||
{
|
{
|
||||||
rcheevos_locals_t* rcheevos_locals = get_rcheevos_locals();
|
rcheevos_locals_t* rcheevos_locals = get_rcheevos_locals();
|
||||||
|
|
||||||
/* Just activate the rich presence script now.
|
/* Just activate the rich presence script now.
|
||||||
* It can't be toggled on or off,
|
* It can't be toggled on or off,
|
||||||
* so there's no reason to keep the unparsed version
|
* so there's no reason to keep the unparsed version
|
||||||
* around any longer than necessary, and we can avoid
|
* around any longer than necessary, and we can avoid
|
||||||
* making a copy in the process. */
|
* making a copy in the process. */
|
||||||
int result = rc_runtime_activate_richpresence(
|
int result = rc_runtime_activate_richpresence(
|
||||||
|
@ -1487,7 +1487,7 @@ static void rcheevos_async_fetch_user_unlocks_callback(
|
||||||
struct rcheevos_async_io_request* request,
|
struct rcheevos_async_io_request* request,
|
||||||
http_transfer_data_t* data, char buffer[], size_t buffer_size)
|
http_transfer_data_t* data, char buffer[], size_t buffer_size)
|
||||||
{
|
{
|
||||||
rcheevos_async_initialize_runtime_data_t* runtime_data =
|
rcheevos_async_initialize_runtime_data_t* runtime_data =
|
||||||
(rcheevos_async_initialize_runtime_data_t*)request->callback_data;
|
(rcheevos_async_initialize_runtime_data_t*)request->callback_data;
|
||||||
int result;
|
int result;
|
||||||
|
|
||||||
|
@ -1513,7 +1513,7 @@ static void rcheevos_async_fetch_game_data_callback(
|
||||||
struct rcheevos_async_io_request* request,
|
struct rcheevos_async_io_request* request,
|
||||||
http_transfer_data_t* data, char buffer[], size_t buffer_size)
|
http_transfer_data_t* data, char buffer[], size_t buffer_size)
|
||||||
{
|
{
|
||||||
rcheevos_async_initialize_runtime_data_t* runtime_data =
|
rcheevos_async_initialize_runtime_data_t* runtime_data =
|
||||||
(rcheevos_async_initialize_runtime_data_t*)request->callback_data;
|
(rcheevos_async_initialize_runtime_data_t*)request->callback_data;
|
||||||
|
|
||||||
#ifdef CHEEVOS_SAVE_JSON
|
#ifdef CHEEVOS_SAVE_JSON
|
||||||
|
@ -1527,7 +1527,7 @@ static void rcheevos_async_fetch_game_data_callback(
|
||||||
rcheevos_locals_t* rcheevos_locals = get_rcheevos_locals();
|
rcheevos_locals_t* rcheevos_locals = get_rcheevos_locals();
|
||||||
rcheevos_locals->game.title = strdup(
|
rcheevos_locals->game.title = strdup(
|
||||||
runtime_data->game_data.title);
|
runtime_data->game_data.title);
|
||||||
rcheevos_locals->game.console_id =
|
rcheevos_locals->game.console_id =
|
||||||
runtime_data->game_data.console_id;
|
runtime_data->game_data.console_id;
|
||||||
|
|
||||||
snprintf(rcheevos_locals->game.badge_name, sizeof(rcheevos_locals->game.badge_name),
|
snprintf(rcheevos_locals->game.badge_name, sizeof(rcheevos_locals->game.badge_name),
|
||||||
|
@ -1546,7 +1546,7 @@ void rcheevos_client_initialize_runtime(unsigned game_id,
|
||||||
rcheevos_async_io_request* request;
|
rcheevos_async_io_request* request;
|
||||||
const settings_t *settings = config_get_ptr();
|
const settings_t *settings = config_get_ptr();
|
||||||
const rcheevos_locals_t *rcheevos_locals = get_rcheevos_locals();
|
const rcheevos_locals_t *rcheevos_locals = get_rcheevos_locals();
|
||||||
rcheevos_async_initialize_runtime_data_t *data =
|
rcheevos_async_initialize_runtime_data_t *data =
|
||||||
(rcheevos_async_initialize_runtime_data_t*)
|
(rcheevos_async_initialize_runtime_data_t*)
|
||||||
malloc(sizeof(rcheevos_async_initialize_runtime_data_t));
|
malloc(sizeof(rcheevos_async_initialize_runtime_data_t));
|
||||||
|
|
||||||
|
@ -1728,7 +1728,7 @@ static void rcheevos_async_ping_handler(retro_task_t* task)
|
||||||
"Stopping periodic rich presence update task for game %u\n", request->id);
|
"Stopping periodic rich presence update task for game %u\n", request->id);
|
||||||
/* game changed; stop the recurring task - a new one will
|
/* game changed; stop the recurring task - a new one will
|
||||||
* be scheduled if a new game is loaded */
|
* be scheduled if a new game is loaded */
|
||||||
task_set_finished(task, 1);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
/* request->request was destroyed
|
/* request->request was destroyed
|
||||||
* in rcheevos_async_http_task_callback */
|
* in rcheevos_async_http_task_callback */
|
||||||
free(request);
|
free(request);
|
||||||
|
@ -1849,7 +1849,7 @@ static void rcheevos_end_fetch_badges(rcheevos_fetch_badge_state* state)
|
||||||
|
|
||||||
static void rcheevos_async_download_next_badge(void* userdata)
|
static void rcheevos_async_download_next_badge(void* userdata)
|
||||||
{
|
{
|
||||||
rcheevos_fetch_badge_data* badge_data =
|
rcheevos_fetch_badge_data* badge_data =
|
||||||
(rcheevos_fetch_badge_data*)userdata;
|
(rcheevos_fetch_badge_data*)userdata;
|
||||||
rcheevos_fetch_next_badge(badge_data->state);
|
rcheevos_fetch_next_badge(badge_data->state);
|
||||||
|
|
||||||
|
@ -1896,7 +1896,7 @@ static void rcheevos_async_write_badge(retro_task_t* task)
|
||||||
badge_data->data = NULL;
|
badge_data->data = NULL;
|
||||||
badge_data->data_len = 0;
|
badge_data->data_len = 0;
|
||||||
|
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
|
|
||||||
rcheevos_async_fetch_badge_complete(badge_data);
|
rcheevos_async_fetch_badge_complete(badge_data);
|
||||||
}
|
}
|
||||||
|
@ -1945,7 +1945,7 @@ static bool rcheevos_client_fetch_badge(
|
||||||
state->badge_directory, sizeof(badge_fullpath));
|
state->badge_directory, sizeof(badge_fullpath));
|
||||||
fill_pathname_slash(badge_fullpath, sizeof(badge_fullpath));
|
fill_pathname_slash(badge_fullpath, sizeof(badge_fullpath));
|
||||||
badge_fullname = badge_fullpath + strlen(badge_fullpath);
|
badge_fullname = badge_fullpath + strlen(badge_fullpath);
|
||||||
badge_fullname_size = sizeof(badge_fullpath) -
|
badge_fullname_size = sizeof(badge_fullpath) -
|
||||||
(badge_fullname - badge_fullpath);
|
(badge_fullname - badge_fullpath);
|
||||||
|
|
||||||
snprintf(badge_fullname,
|
snprintf(badge_fullname,
|
||||||
|
@ -1978,8 +1978,8 @@ static bool rcheevos_client_fetch_badge(
|
||||||
|
|
||||||
if (found_index == -1)
|
if (found_index == -1)
|
||||||
{
|
{
|
||||||
/* unexpected - but if it happens,
|
/* unexpected - but if it happens,
|
||||||
* the queue is full. Pretend we found
|
* the queue is full. Pretend we found
|
||||||
* a match to prevent an exception */
|
* a match to prevent an exception */
|
||||||
if (request_index == -1)
|
if (request_index == -1)
|
||||||
found_index = 0;
|
found_index = 0;
|
||||||
|
@ -2018,8 +2018,8 @@ static bool rcheevos_client_fetch_badge(
|
||||||
|
|
||||||
memset(&api_params, 0, sizeof(api_params));
|
memset(&api_params, 0, sizeof(api_params));
|
||||||
api_params.image_name = badge_name;
|
api_params.image_name = badge_name;
|
||||||
api_params.image_type = locked
|
api_params.image_type = locked
|
||||||
? RC_IMAGE_TYPE_ACHIEVEMENT_LOCKED
|
? RC_IMAGE_TYPE_ACHIEVEMENT_LOCKED
|
||||||
: RC_IMAGE_TYPE_ACHIEVEMENT;
|
: RC_IMAGE_TYPE_ACHIEVEMENT;
|
||||||
|
|
||||||
result = rc_api_init_fetch_image_request(&request->request, &api_params);
|
result = rc_api_init_fetch_image_request(&request->request, &api_params);
|
||||||
|
@ -2059,7 +2059,7 @@ static bool rcheevos_fetch_next_badge(rcheevos_fetch_badge_state* state)
|
||||||
#ifdef HAVE_THREADS
|
#ifdef HAVE_THREADS
|
||||||
slock_lock(rcheevos_locals->load_info.request_lock);
|
slock_lock(rcheevos_locals->load_info.request_lock);
|
||||||
#endif
|
#endif
|
||||||
if ( state->locked_badge_fetch_index
|
if ( state->locked_badge_fetch_index
|
||||||
< rcheevos_locals->game.achievement_count)
|
< rcheevos_locals->game.achievement_count)
|
||||||
cheevo = &rcheevos_locals->game.achievements[state->locked_badge_fetch_index++];
|
cheevo = &rcheevos_locals->game.achievements[state->locked_badge_fetch_index++];
|
||||||
else
|
else
|
||||||
|
@ -2071,7 +2071,7 @@ static bool rcheevos_fetch_next_badge(rcheevos_fetch_badge_state* state)
|
||||||
if (!cheevo)
|
if (!cheevo)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
active = (cheevo->active
|
active = (cheevo->active
|
||||||
& (RCHEEVOS_ACTIVE_HARDCORE | RCHEEVOS_ACTIVE_SOFTCORE));
|
& (RCHEEVOS_ACTIVE_HARDCORE | RCHEEVOS_ACTIVE_SOFTCORE));
|
||||||
if (rcheevos_client_fetch_badge(cheevo->badge, active, state))
|
if (rcheevos_client_fetch_badge(cheevo->badge, active, state))
|
||||||
return true;
|
return true;
|
||||||
|
@ -2214,7 +2214,7 @@ void rcheevos_client_award_achievement(unsigned achievement_id)
|
||||||
CHEEVOS_LOG(RCHEEVOS_TAG "Failed to allocate unlock request for achievement %u\n",
|
CHEEVOS_LOG(RCHEEVOS_TAG "Failed to allocate unlock request for achievement %u\n",
|
||||||
achievement_id);
|
achievement_id);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
const rcheevos_locals_t* rcheevos_locals = get_rcheevos_locals();
|
const rcheevos_locals_t* rcheevos_locals = get_rcheevos_locals();
|
||||||
rc_api_award_achievement_request_t api_params;
|
rc_api_award_achievement_request_t api_params;
|
||||||
|
@ -2231,7 +2231,7 @@ void rcheevos_client_award_achievement(unsigned achievement_id)
|
||||||
&api_params);
|
&api_params);
|
||||||
|
|
||||||
rcheevos_async_begin_request(request, result,
|
rcheevos_async_begin_request(request, result,
|
||||||
rcheevos_async_award_achievement_callback,
|
rcheevos_async_award_achievement_callback,
|
||||||
CHEEVOS_ASYNC_AWARD_ACHIEVEMENT, achievement_id,
|
CHEEVOS_ASYNC_AWARD_ACHIEVEMENT, achievement_id,
|
||||||
"Awarded achievement",
|
"Awarded achievement",
|
||||||
"Error awarding achievement");
|
"Error awarding achievement");
|
||||||
|
@ -2269,7 +2269,7 @@ void rcheevos_client_submit_lboard_entry(unsigned leaderboard_id,
|
||||||
"Failed to allocate request for lboard %u submit\n",
|
"Failed to allocate request for lboard %u submit\n",
|
||||||
leaderboard_id);
|
leaderboard_id);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
const rcheevos_locals_t* rcheevos_locals = get_rcheevos_locals();
|
const rcheevos_locals_t* rcheevos_locals = get_rcheevos_locals();
|
||||||
rc_api_submit_lboard_entry_request_t api_params;
|
rc_api_submit_lboard_entry_request_t api_params;
|
||||||
|
@ -2286,7 +2286,7 @@ void rcheevos_client_submit_lboard_entry(unsigned leaderboard_id,
|
||||||
&api_params);
|
&api_params);
|
||||||
|
|
||||||
rcheevos_async_begin_request(request, result,
|
rcheevos_async_begin_request(request, result,
|
||||||
rcheevos_async_submit_lboard_entry_callback,
|
rcheevos_async_submit_lboard_entry_callback,
|
||||||
CHEEVOS_ASYNC_SUBMIT_LBOARD, leaderboard_id,
|
CHEEVOS_ASYNC_SUBMIT_LBOARD, leaderboard_id,
|
||||||
"Submitted leaderboard",
|
"Submitted leaderboard",
|
||||||
"Error submitting leaderboard");
|
"Error submitting leaderboard");
|
||||||
|
|
|
@ -243,6 +243,8 @@ void gfx_widgets_msg_queue_push(
|
||||||
|
|
||||||
if (task)
|
if (task)
|
||||||
{
|
{
|
||||||
|
uint8_t flg = task_get_flags(task);
|
||||||
|
|
||||||
title = msg_widget->msg = strdup(task->title);
|
title = msg_widget->msg = strdup(task->title);
|
||||||
msg_widget->msg_new = strdup(title);
|
msg_widget->msg_new = strdup(title);
|
||||||
title_length = strlen(title);
|
title_length = strlen(title);
|
||||||
|
@ -250,9 +252,9 @@ void gfx_widgets_msg_queue_push(
|
||||||
|
|
||||||
if (!string_is_empty(task->error))
|
if (!string_is_empty(task->error))
|
||||||
msg_widget->flags |= DISPWIDG_FLAG_TASK_ERROR;
|
msg_widget->flags |= DISPWIDG_FLAG_TASK_ERROR;
|
||||||
if (task->cancelled)
|
if ((flg & RETRO_TASK_FLG_CANCELLED) > 0)
|
||||||
msg_widget->flags |= DISPWIDG_FLAG_TASK_CANCELLED;
|
msg_widget->flags |= DISPWIDG_FLAG_TASK_CANCELLED;
|
||||||
if (task->finished)
|
if ((flg & RETRO_TASK_FLG_FINISHED) > 0)
|
||||||
msg_widget->flags |= DISPWIDG_FLAG_TASK_FINISHED;
|
msg_widget->flags |= DISPWIDG_FLAG_TASK_FINISHED;
|
||||||
msg_widget->task_progress = task->progress;
|
msg_widget->task_progress = task->progress;
|
||||||
msg_widget->task_ident = task->ident;
|
msg_widget->task_ident = task->ident;
|
||||||
|
@ -379,7 +381,7 @@ void gfx_widgets_msg_queue_push(
|
||||||
msg_widget->msg_len = len;
|
msg_widget->msg_len = len;
|
||||||
msg_widget->msg_transition_animation = 0;
|
msg_widget->msg_transition_animation = 0;
|
||||||
|
|
||||||
if (!task->alternative_look)
|
if (!((task->flags & RETRO_TASK_FLG_ALTERNATIVE_LOOK) > 0))
|
||||||
{
|
{
|
||||||
gfx_animation_ctx_entry_t entry;
|
gfx_animation_ctx_entry_t entry;
|
||||||
|
|
||||||
|
@ -403,9 +405,9 @@ void gfx_widgets_msg_queue_push(
|
||||||
|
|
||||||
if (!string_is_empty(task->error))
|
if (!string_is_empty(task->error))
|
||||||
msg_widget->flags |= DISPWIDG_FLAG_TASK_ERROR;
|
msg_widget->flags |= DISPWIDG_FLAG_TASK_ERROR;
|
||||||
if (task->cancelled)
|
if ((task->flags & RETRO_TASK_FLG_CANCELLED) > 0)
|
||||||
msg_widget->flags |= DISPWIDG_FLAG_TASK_CANCELLED;
|
msg_widget->flags |= DISPWIDG_FLAG_TASK_CANCELLED;
|
||||||
if (task->finished)
|
if ((task->flags & RETRO_TASK_FLG_FINISHED) > 0)
|
||||||
msg_widget->flags |= DISPWIDG_FLAG_TASK_FINISHED;
|
msg_widget->flags |= DISPWIDG_FLAG_TASK_FINISHED;
|
||||||
msg_widget->task_progress = task->progress;
|
msg_widget->task_progress = task->progress;
|
||||||
}
|
}
|
||||||
|
|
|
@ -93,6 +93,36 @@ typedef struct
|
||||||
char *source_file;
|
char *source_file;
|
||||||
} decompress_task_data_t;
|
} decompress_task_data_t;
|
||||||
|
|
||||||
|
enum retro_task_flags
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* If \c true, the frontend should use some alternative means
|
||||||
|
* of displaying this task's progress or messages.
|
||||||
|
* Not used within cores.
|
||||||
|
*/
|
||||||
|
RETRO_TASK_FLG_ALTERNATIVE_LOOK = (1 << 0),
|
||||||
|
/**
|
||||||
|
* Set to \c true by \c handler to indicate that this task has finished.
|
||||||
|
* At this point the task queue will call \c callback and \c cleanup,
|
||||||
|
* then deallocate the task.
|
||||||
|
*/
|
||||||
|
RETRO_TASK_FLG_FINISHED = (1 << 1),
|
||||||
|
/**
|
||||||
|
* Set to true by the task queue to signal that this task \em must end.
|
||||||
|
* \c handler should check to see if this is set,
|
||||||
|
* aborting or completing its work as soon as possible afterward.
|
||||||
|
* \c callback and \c cleanup will still be called as normal.
|
||||||
|
*
|
||||||
|
* @see task_queue_reset
|
||||||
|
*/
|
||||||
|
RETRO_TASK_FLG_CANCELLED = (1 << 2),
|
||||||
|
/**
|
||||||
|
* If set, the task queue will not call \c progress_cb
|
||||||
|
* and will not display any messages from this task.
|
||||||
|
*/
|
||||||
|
RETRO_TASK_FLG_MUTE = (1 << 3)
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A unit of work executed by the task system,
|
* A unit of work executed by the task system,
|
||||||
* spread across one or more frames.
|
* spread across one or more frames.
|
||||||
|
@ -245,35 +275,7 @@ struct retro_task
|
||||||
enum task_type type;
|
enum task_type type;
|
||||||
enum task_style style;
|
enum task_style style;
|
||||||
|
|
||||||
/**
|
uint8_t flags;
|
||||||
* If \c true, the frontend should use some alternative means
|
|
||||||
* of displaying this task's progress or messages.
|
|
||||||
* Not used within cores.
|
|
||||||
*/
|
|
||||||
bool alternative_look;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set to \c true by \c handler to indicate that this task has finished.
|
|
||||||
* At this point the task queue will call \c callback and \c cleanup,
|
|
||||||
* then deallocate the task.
|
|
||||||
*/
|
|
||||||
bool finished;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set to true by the task queue to signal that this task \em must end.
|
|
||||||
* \c handler should check to see if this is set,
|
|
||||||
* aborting or completing its work as soon as possible afterward.
|
|
||||||
* \c callback and \c cleanup will still be called as normal.
|
|
||||||
*
|
|
||||||
* @see task_queue_reset
|
|
||||||
*/
|
|
||||||
bool cancelled;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* If set, the task queue will not call \c progress_cb
|
|
||||||
* and will not display any messages from this task.
|
|
||||||
*/
|
|
||||||
bool mute;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -405,27 +407,7 @@ void task_queue_retriever_info_free(task_retriever_info_t *list);
|
||||||
*/
|
*/
|
||||||
void task_queue_cancel_task(void *task);
|
void task_queue_cancel_task(void *task);
|
||||||
|
|
||||||
/**
|
void task_set_flags(retro_task_t *task, uint8_t flags, bool set);
|
||||||
* Sets \c task::finished to the given value.
|
|
||||||
* Thread-safe if the task queue is threaded.
|
|
||||||
*
|
|
||||||
* @param task The task to modify.
|
|
||||||
* Behavior is undefined if \c NULL.
|
|
||||||
* @param finished Whether the task should be considered finished.
|
|
||||||
* @see retro_task::finished
|
|
||||||
*/
|
|
||||||
void task_set_finished(retro_task_t *task, bool finished);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets \c task::mute to the given value.
|
|
||||||
* Thread-safe if the task queue is threaded.
|
|
||||||
*
|
|
||||||
* @param task The task to modify.
|
|
||||||
* Behavior is undefined if \c NULL.
|
|
||||||
* @param mute Whether the task should be considered muted.
|
|
||||||
* @see retro_task::mute
|
|
||||||
*/
|
|
||||||
void task_set_mute(retro_task_t *task, bool mute);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets \c task::error to the given value.
|
* Sets \c task::error to the given value.
|
||||||
|
@ -476,17 +458,6 @@ void task_set_title(retro_task_t *task, char *title);
|
||||||
*/
|
*/
|
||||||
void task_set_data(retro_task_t *task, void *data);
|
void task_set_data(retro_task_t *task, void *data);
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets \c task::cancelled to the given value.
|
|
||||||
* Thread-safe if the task queue is threaded.
|
|
||||||
*
|
|
||||||
* @param task The task to modify.
|
|
||||||
* Behavior is undefined if \c NULL.
|
|
||||||
* @param cancelled Whether the task should be considered cancelled.
|
|
||||||
* @see retro_task::cancelled
|
|
||||||
*/
|
|
||||||
void task_set_cancelled(retro_task_t *task, bool cancelled);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Frees the \c task's title, if any.
|
* Frees the \c task's title, if any.
|
||||||
* Thread-safe if the task queue is threaded.
|
* Thread-safe if the task queue is threaded.
|
||||||
|
@ -496,39 +467,6 @@ void task_set_cancelled(retro_task_t *task, bool cancelled);
|
||||||
*/
|
*/
|
||||||
void task_free_title(retro_task_t *task);
|
void task_free_title(retro_task_t *task);
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns \c task::cancelled.
|
|
||||||
* Thread-safe if the task queue is threaded.
|
|
||||||
*
|
|
||||||
* @param task The task to query.
|
|
||||||
* Behavior is undefined if \c NULL.
|
|
||||||
* @return The value of \c task::cancelled.
|
|
||||||
* @see retro_task::cancelled
|
|
||||||
*/
|
|
||||||
bool task_get_cancelled(retro_task_t *task);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns \c task::finished.
|
|
||||||
* Thread-safe if the task queue is threaded.
|
|
||||||
*
|
|
||||||
* @param task The task to query.
|
|
||||||
* Behavior is undefined if \c NULL.
|
|
||||||
* @return The value of \c task::finished.
|
|
||||||
* @see retro_task::finished
|
|
||||||
*/
|
|
||||||
bool task_get_finished(retro_task_t *task);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns \c task::mute.
|
|
||||||
* Thread-safe if the task queue is threaded.
|
|
||||||
*
|
|
||||||
* @param task The task to query.
|
|
||||||
* Behavior is undefined if \c NULL.
|
|
||||||
* @return The value of \c task::mute.
|
|
||||||
* @see retro_task::mute
|
|
||||||
*/
|
|
||||||
bool task_get_mute(retro_task_t *task);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns \c task::error.
|
* Returns \c task::error.
|
||||||
* Thread-safe if the task queue is threaded.
|
* Thread-safe if the task queue is threaded.
|
||||||
|
@ -644,6 +582,8 @@ void task_queue_retrieve(task_retriever_data_t *data);
|
||||||
*/
|
*/
|
||||||
void task_queue_check(void);
|
void task_queue_check(void);
|
||||||
|
|
||||||
|
uint8_t task_get_flags(retro_task_t *task);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Schedules a task to start running.
|
* Schedules a task to start running.
|
||||||
* If \c task::when is 0, it will start as soon as possible.
|
* If \c task::when is 0, it will start as soon as possible.
|
||||||
|
|
|
@ -98,9 +98,9 @@ static void task_queue_push_progress(retro_task_t *task)
|
||||||
slock_lock(property_lock);
|
slock_lock(property_lock);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (task->title && !task->mute)
|
if (task->title && (!((task->flags & RETRO_TASK_FLG_MUTE) > 0)))
|
||||||
{
|
{
|
||||||
if (task->finished)
|
if ((task->flags & RETRO_TASK_FLG_FINISHED) > 0)
|
||||||
{
|
{
|
||||||
if (task->error)
|
if (task->error)
|
||||||
task_queue_msg_push(task, 1, 60, true, "%s: %s",
|
task_queue_msg_push(task, 1, 60, true, "%s: %s",
|
||||||
|
@ -205,7 +205,7 @@ static void retro_task_regular_push_running(retro_task_t *task)
|
||||||
static void retro_task_regular_cancel(void *task)
|
static void retro_task_regular_cancel(void *task)
|
||||||
{
|
{
|
||||||
retro_task_t *t = (retro_task_t*)task;
|
retro_task_t *t = (retro_task_t*)task;
|
||||||
t->cancelled = true;
|
t->flags |= RETRO_TASK_FLG_CANCELLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void retro_task_regular_gather(void)
|
static void retro_task_regular_gather(void)
|
||||||
|
@ -231,7 +231,7 @@ static void retro_task_regular_gather(void)
|
||||||
task_queue_push_progress(task);
|
task_queue_push_progress(task);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (task->finished)
|
if ((task->flags & RETRO_TASK_FLG_FINISHED) > 0)
|
||||||
task_queue_put(&tasks_finished, task);
|
task_queue_put(&tasks_finished, task);
|
||||||
else
|
else
|
||||||
task_queue_put(&tasks_running, task);
|
task_queue_put(&tasks_running, task);
|
||||||
|
@ -251,7 +251,7 @@ static void retro_task_regular_reset(void)
|
||||||
retro_task_t *task = tasks_running.front;
|
retro_task_t *task = tasks_running.front;
|
||||||
|
|
||||||
for (; task; task = task->next)
|
for (; task; task = task->next)
|
||||||
task->cancelled = true;
|
task->flags |= RETRO_TASK_FLG_CANCELLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void retro_task_regular_init(void) { }
|
static void retro_task_regular_init(void) { }
|
||||||
|
@ -391,7 +391,7 @@ static void retro_task_threaded_cancel(void *task)
|
||||||
{
|
{
|
||||||
if (t == task)
|
if (t == task)
|
||||||
{
|
{
|
||||||
t->cancelled = true;
|
t->flags |= RETRO_TASK_FLG_CANCELLED;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -440,7 +440,7 @@ static void retro_task_threaded_reset(void)
|
||||||
|
|
||||||
slock_lock(running_lock);
|
slock_lock(running_lock);
|
||||||
for (task = tasks_running.front; task; task = task->next)
|
for (task = tasks_running.front; task; task = task->next)
|
||||||
task->cancelled = true;
|
task->flags |= RETRO_TASK_FLG_CANCELLED;
|
||||||
slock_unlock(running_lock);
|
slock_unlock(running_lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -511,7 +511,7 @@ static void threaded_worker(void *userdata)
|
||||||
task->handler(task);
|
task->handler(task);
|
||||||
|
|
||||||
slock_lock(property_lock);
|
slock_lock(property_lock);
|
||||||
finished = task->finished;
|
finished = ((task->flags & RETRO_TASK_FLG_FINISHED) > 0) ? true : false;
|
||||||
slock_unlock(property_lock);
|
slock_unlock(property_lock);
|
||||||
|
|
||||||
/* Update queue */
|
/* Update queue */
|
||||||
|
@ -762,28 +762,6 @@ bool task_is_on_main_thread(void)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void task_set_finished(retro_task_t *task, bool finished)
|
|
||||||
{
|
|
||||||
#ifdef HAVE_THREADS
|
|
||||||
slock_lock(property_lock);
|
|
||||||
#endif
|
|
||||||
task->finished = finished;
|
|
||||||
#ifdef HAVE_THREADS
|
|
||||||
slock_unlock(property_lock);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void task_set_mute(retro_task_t *task, bool mute)
|
|
||||||
{
|
|
||||||
#ifdef HAVE_THREADS
|
|
||||||
slock_lock(property_lock);
|
|
||||||
#endif
|
|
||||||
task->mute = mute;
|
|
||||||
#ifdef HAVE_THREADS
|
|
||||||
slock_unlock(property_lock);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void task_set_error(retro_task_t *task, char *error)
|
void task_set_error(retro_task_t *task, char *error)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_THREADS
|
#ifdef HAVE_THREADS
|
||||||
|
@ -828,17 +806,6 @@ void task_set_data(retro_task_t *task, void *data)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void task_set_cancelled(retro_task_t *task, bool cancelled)
|
|
||||||
{
|
|
||||||
#ifdef HAVE_THREADS
|
|
||||||
slock_lock(running_lock);
|
|
||||||
#endif
|
|
||||||
task->cancelled = cancelled;
|
|
||||||
#ifdef HAVE_THREADS
|
|
||||||
slock_unlock(running_lock);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void task_free_title(retro_task_t *task)
|
void task_free_title(retro_task_t *task)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_THREADS
|
#ifdef HAVE_THREADS
|
||||||
|
@ -867,49 +834,31 @@ void* task_get_data(retro_task_t *task)
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool task_get_cancelled(retro_task_t *task)
|
void task_set_flags(retro_task_t *task, uint8_t flags, bool set)
|
||||||
{
|
{
|
||||||
bool cancelled = false;
|
|
||||||
|
|
||||||
#ifdef HAVE_THREADS
|
|
||||||
slock_lock(running_lock);
|
|
||||||
#endif
|
|
||||||
cancelled = task->cancelled;
|
|
||||||
#ifdef HAVE_THREADS
|
|
||||||
slock_unlock(running_lock);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return cancelled;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool task_get_finished(retro_task_t *task)
|
|
||||||
{
|
|
||||||
bool finished = false;
|
|
||||||
|
|
||||||
#ifdef HAVE_THREADS
|
#ifdef HAVE_THREADS
|
||||||
slock_lock(property_lock);
|
slock_lock(property_lock);
|
||||||
#endif
|
#endif
|
||||||
finished = task->finished;
|
if (set)
|
||||||
|
task->flags |= (flags);
|
||||||
|
else
|
||||||
|
task->flags &= ~(flags);
|
||||||
#ifdef HAVE_THREADS
|
#ifdef HAVE_THREADS
|
||||||
slock_unlock(property_lock);
|
slock_unlock(property_lock);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return finished;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool task_get_mute(retro_task_t *task)
|
uint8_t task_get_flags(retro_task_t *task)
|
||||||
{
|
{
|
||||||
bool mute = false;
|
uint8_t _flags = 0;
|
||||||
|
|
||||||
#ifdef HAVE_THREADS
|
#ifdef HAVE_THREADS
|
||||||
slock_lock(property_lock);
|
slock_lock(property_lock);
|
||||||
#endif
|
#endif
|
||||||
mute = task->mute;
|
_flags = task->flags;
|
||||||
#ifdef HAVE_THREADS
|
#ifdef HAVE_THREADS
|
||||||
slock_unlock(property_lock);
|
slock_unlock(property_lock);
|
||||||
#endif
|
#endif
|
||||||
|
return _flags;
|
||||||
return mute;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
char* task_get_error(retro_task_t *task)
|
char* task_get_error(retro_task_t *task)
|
||||||
|
@ -969,9 +918,7 @@ retro_task_t *task_init(void)
|
||||||
task->handler = NULL;
|
task->handler = NULL;
|
||||||
task->callback = NULL;
|
task->callback = NULL;
|
||||||
task->cleanup = NULL;
|
task->cleanup = NULL;
|
||||||
task->finished = false;
|
task->flags = 0;
|
||||||
task->cancelled = false;
|
|
||||||
task->mute = false;
|
|
||||||
task->task_data = NULL;
|
task->task_data = NULL;
|
||||||
task->user_data = NULL;
|
task->user_data = NULL;
|
||||||
task->state = NULL;
|
task->state = NULL;
|
||||||
|
@ -983,7 +930,6 @@ retro_task_t *task_init(void)
|
||||||
task->style = TASK_STYLE_NONE;
|
task->style = TASK_STYLE_NONE;
|
||||||
task->ident = task_count++;
|
task->ident = task_count++;
|
||||||
task->frontend_userdata = NULL;
|
task->frontend_userdata = NULL;
|
||||||
task->alternative_look = false;
|
|
||||||
task->next = NULL;
|
task->next = NULL;
|
||||||
task->when = 0;
|
task->when = 0;
|
||||||
|
|
||||||
|
|
|
@ -7318,7 +7318,7 @@ void runloop_task_msg_queue_push(
|
||||||
dispgfx_widget_t *p_dispwidget = dispwidget_get_ptr();
|
dispgfx_widget_t *p_dispwidget = dispwidget_get_ptr();
|
||||||
bool widgets_active = p_dispwidget->active;
|
bool widgets_active = p_dispwidget->active;
|
||||||
|
|
||||||
if (widgets_active && task->title && !task->mute)
|
if (widgets_active && task->title && (!((task->flags & RETRO_TASK_FLG_MUTE) > 0)))
|
||||||
{
|
{
|
||||||
RUNLOOP_MSG_QUEUE_LOCK(runloop_st);
|
RUNLOOP_MSG_QUEUE_LOCK(runloop_st);
|
||||||
ui_companion_driver_msg_queue_push(msg,
|
ui_companion_driver_msg_queue_push(msg,
|
||||||
|
|
|
@ -421,12 +421,13 @@ bool task_audio_mixer_load_handler(retro_task_t *task)
|
||||||
{
|
{
|
||||||
nbio_handle_t *nbio = (nbio_handle_t*)task->state;
|
nbio_handle_t *nbio = (nbio_handle_t*)task->state;
|
||||||
struct audio_mixer_handle *mixer = (struct audio_mixer_handle*)nbio->data;
|
struct audio_mixer_handle *mixer = (struct audio_mixer_handle*)nbio->data;
|
||||||
|
uint8_t flg = task_get_flags(task);
|
||||||
|
|
||||||
if (
|
if (
|
||||||
nbio->is_finished
|
nbio->is_finished
|
||||||
&& (mixer && !mixer->is_finished)
|
&& (mixer && !mixer->is_finished)
|
||||||
&& (mixer->copy_data_over)
|
&& (mixer->copy_data_over)
|
||||||
&& (!task_get_cancelled(task)))
|
&& (!((flg & RETRO_TASK_FLG_CANCELLED) > 0)))
|
||||||
{
|
{
|
||||||
nbio_buf_t *img = (nbio_buf_t*)malloc(sizeof(*img));
|
nbio_buf_t *img = (nbio_buf_t*)malloc(sizeof(*img));
|
||||||
|
|
||||||
|
@ -521,7 +522,7 @@ bool task_push_audio_mixer_load_and_play(
|
||||||
nbio->type = NBIO_TYPE_FLAC;
|
nbio->type = NBIO_TYPE_FLAC;
|
||||||
t->callback = task_audio_mixer_handle_upload_flac_and_play;
|
t->callback = task_audio_mixer_handle_upload_flac_and_play;
|
||||||
}
|
}
|
||||||
else if (
|
else if (
|
||||||
string_is_equal(ext_lower, "mod") ||
|
string_is_equal(ext_lower, "mod") ||
|
||||||
string_is_equal(ext_lower, "s3m") ||
|
string_is_equal(ext_lower, "s3m") ||
|
||||||
string_is_equal(ext_lower, "xm"))
|
string_is_equal(ext_lower, "xm"))
|
||||||
|
@ -648,7 +649,7 @@ bool task_push_audio_mixer_load(
|
||||||
nbio->type = NBIO_TYPE_FLAC;
|
nbio->type = NBIO_TYPE_FLAC;
|
||||||
t->callback = task_audio_mixer_handle_upload_flac;
|
t->callback = task_audio_mixer_handle_upload_flac;
|
||||||
}
|
}
|
||||||
else if (
|
else if (
|
||||||
string_is_equal(ext_lower, "mod") ||
|
string_is_equal(ext_lower, "mod") ||
|
||||||
string_is_equal(ext_lower, "s3m") ||
|
string_is_equal(ext_lower, "s3m") ||
|
||||||
string_is_equal(ext_lower, "xm"))
|
string_is_equal(ext_lower, "xm"))
|
||||||
|
|
|
@ -735,7 +735,7 @@ static void input_autoconfigure_connect_handler(retro_task_t *task)
|
||||||
task_finished:
|
task_finished:
|
||||||
|
|
||||||
if (task)
|
if (task)
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool autoconfigure_connect_finder(retro_task_t *task, void *user_data)
|
static bool autoconfigure_connect_finder(retro_task_t *task, void *user_data)
|
||||||
|
@ -889,10 +889,10 @@ bool input_autoconfigure_connect(
|
||||||
|
|
||||||
task->handler = input_autoconfigure_connect_handler;
|
task->handler = input_autoconfigure_connect_handler;
|
||||||
task->state = autoconfig_handle;
|
task->state = autoconfig_handle;
|
||||||
task->mute = false;
|
|
||||||
task->title = NULL;
|
task->title = NULL;
|
||||||
task->callback = cb_input_autoconfigure_connect;
|
task->callback = cb_input_autoconfigure_connect;
|
||||||
task->cleanup = input_autoconfigure_free;
|
task->cleanup = input_autoconfigure_free;
|
||||||
|
task->flags &= ~RETRO_TASK_FLG_MUTE;
|
||||||
|
|
||||||
task_queue_push(task);
|
task_queue_push(task);
|
||||||
|
|
||||||
|
@ -981,7 +981,7 @@ static void input_autoconfigure_disconnect_handler(retro_task_t *task)
|
||||||
task_finished:
|
task_finished:
|
||||||
|
|
||||||
if (task)
|
if (task)
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool autoconfigure_disconnect_finder(retro_task_t *task, void *user_data)
|
static bool autoconfigure_disconnect_finder(retro_task_t *task, void *user_data)
|
||||||
|
|
|
@ -29,7 +29,7 @@ static void task_bluetooth_scan_handler(retro_task_t *task)
|
||||||
task_set_progress(task, 100);
|
task_set_progress(task, 100);
|
||||||
task_free_title(task);
|
task_free_title(task);
|
||||||
task_set_title(task, strdup(msg_hash_to_str(MSG_BLUETOOTH_SCAN_COMPLETE)));
|
task_set_title(task, strdup(msg_hash_to_str(MSG_BLUETOOTH_SCAN_COMPLETE)));
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool task_push_bluetooth_scan(retro_task_callback_t cb)
|
bool task_push_bluetooth_scan(retro_task_callback_t cb)
|
||||||
|
|
|
@ -94,7 +94,7 @@ static void task_cloud_sync_begin_handler(void *user_data, const char *path, boo
|
||||||
{
|
{
|
||||||
RARCH_WARN(CSPFX "begin failed\n");
|
RARCH_WARN(CSPFX "begin failed\n");
|
||||||
task_set_title(task, strdup("Cloud Sync failed"));
|
task_set_title(task, strdup("Cloud Sync failed"));
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
}
|
}
|
||||||
slock_lock(tcs_running_lock);
|
slock_lock(tcs_running_lock);
|
||||||
sync_state->waiting = 0;
|
sync_state->waiting = 0;
|
||||||
|
@ -1070,7 +1070,7 @@ static void task_cloud_sync_end_handler(void *user_data, const char *path, bool
|
||||||
(end_time - sync_state->start_time) % (1000 * 1000),
|
(end_time - sync_state->start_time) % (1000 * 1000),
|
||||||
sync_state->uploads, sync_state->downloads);
|
sync_state->uploads, sync_state->downloads);
|
||||||
|
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void task_cloud_sync_task_handler(retro_task_t *task)
|
static void task_cloud_sync_task_handler(retro_task_t *task)
|
||||||
|
@ -1134,7 +1134,7 @@ static void task_cloud_sync_task_handler(retro_task_t *task)
|
||||||
|
|
||||||
task_finished:
|
task_finished:
|
||||||
if (task)
|
if (task)
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void task_cloud_sync_cb(retro_task_t *task, void *task_data,
|
static void task_cloud_sync_cb(retro_task_t *task, void *task_data,
|
||||||
|
|
|
@ -106,7 +106,7 @@ static void task_cdrom_dump_handler(retro_task_t *task)
|
||||||
state->file = NULL;
|
state->file = NULL;
|
||||||
state->output_file = NULL;
|
state->output_file = NULL;
|
||||||
|
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
|
|
||||||
RARCH_LOG("[CDROM]: Dump finished.\n");
|
RARCH_LOG("[CDROM]: Dump finished.\n");
|
||||||
|
|
||||||
|
|
|
@ -185,17 +185,16 @@ static bool task_core_backup_finder(retro_task_t *task, void *user_data)
|
||||||
|
|
||||||
static void task_core_backup_handler(retro_task_t *task)
|
static void task_core_backup_handler(retro_task_t *task)
|
||||||
{
|
{
|
||||||
|
uint8_t flg;
|
||||||
core_backup_handle_t *backup_handle = NULL;
|
core_backup_handle_t *backup_handle = NULL;
|
||||||
|
|
||||||
if (!task)
|
if (!task)
|
||||||
goto task_finished;
|
goto task_finished;
|
||||||
|
|
||||||
backup_handle = (core_backup_handle_t*)task->state;
|
backup_handle = (core_backup_handle_t*)task->state;
|
||||||
|
flg = task_get_flags(task);
|
||||||
|
|
||||||
if (!backup_handle)
|
if (!backup_handle || ((flg & RETRO_TASK_FLG_CANCELLED) > 0))
|
||||||
goto task_finished;
|
|
||||||
|
|
||||||
if (task_get_cancelled(task))
|
|
||||||
goto task_finished;
|
goto task_finished;
|
||||||
|
|
||||||
switch (backup_handle->status)
|
switch (backup_handle->status)
|
||||||
|
@ -522,7 +521,7 @@ static void task_core_backup_handler(retro_task_t *task)
|
||||||
task_finished:
|
task_finished:
|
||||||
|
|
||||||
if (task)
|
if (task)
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
|
|
||||||
free_core_backup_handle(backup_handle);
|
free_core_backup_handle(backup_handle);
|
||||||
}
|
}
|
||||||
|
@ -621,11 +620,15 @@ void *task_push_core_backup(
|
||||||
/* Configure task */
|
/* Configure task */
|
||||||
task->handler = task_core_backup_handler;
|
task->handler = task_core_backup_handler;
|
||||||
task->state = backup_handle;
|
task->state = backup_handle;
|
||||||
task->mute = mute;
|
|
||||||
task->title = strdup(task_title);
|
task->title = strdup(task_title);
|
||||||
task->alternative_look = true;
|
|
||||||
task->progress = 0;
|
task->progress = 0;
|
||||||
|
|
||||||
|
if (mute)
|
||||||
|
task->flags |= RETRO_TASK_FLG_MUTE;
|
||||||
|
else
|
||||||
|
task->flags &= ~RETRO_TASK_FLG_MUTE;
|
||||||
|
task->flags |= RETRO_TASK_FLG_ALTERNATIVE_LOOK;
|
||||||
|
|
||||||
/* Push task */
|
/* Push task */
|
||||||
task_queue_push(task);
|
task_queue_push(task);
|
||||||
|
|
||||||
|
@ -666,57 +669,56 @@ static void cb_task_core_restore(
|
||||||
|
|
||||||
static void task_core_restore_handler(retro_task_t *task)
|
static void task_core_restore_handler(retro_task_t *task)
|
||||||
{
|
{
|
||||||
|
uint8_t flg;
|
||||||
core_backup_handle_t *backup_handle = NULL;
|
core_backup_handle_t *backup_handle = NULL;
|
||||||
|
|
||||||
if (!task)
|
if (!task)
|
||||||
goto task_finished;
|
goto task_finished;
|
||||||
|
|
||||||
if (!(backup_handle = (core_backup_handle_t*)task->state))
|
backup_handle = (core_backup_handle_t*)task->state;
|
||||||
goto task_finished;
|
flg = task_get_flags(task);
|
||||||
|
|
||||||
if (task_get_cancelled(task))
|
if (!backup_handle || ((flg & RETRO_TASK_FLG_CANCELLED) > 0))
|
||||||
goto task_finished;
|
goto task_finished;
|
||||||
|
|
||||||
switch (backup_handle->status)
|
switch (backup_handle->status)
|
||||||
{
|
{
|
||||||
case CORE_RESTORE_GET_CORE_CRC:
|
case CORE_RESTORE_GET_CORE_CRC:
|
||||||
|
/* If core file already exists, get its current
|
||||||
|
* CRC value */
|
||||||
|
if (path_is_valid(backup_handle->core_path))
|
||||||
{
|
{
|
||||||
/* If core file already exists, get its current
|
/* Open core file for reading */
|
||||||
* CRC value */
|
backup_handle->core_file = intfstream_open_file(
|
||||||
if (path_is_valid(backup_handle->core_path))
|
backup_handle->core_path, RETRO_VFS_FILE_ACCESS_READ,
|
||||||
|
RETRO_VFS_FILE_ACCESS_HINT_NONE);
|
||||||
|
|
||||||
|
if (!backup_handle->core_file)
|
||||||
{
|
{
|
||||||
/* Open core file for reading */
|
RARCH_ERR("[core restore] Failed to open core file: %s\n",
|
||||||
backup_handle->core_file = intfstream_open_file(
|
backup_handle->core_path);
|
||||||
backup_handle->core_path, RETRO_VFS_FILE_ACCESS_READ,
|
backup_handle->status = CORE_RESTORE_END;
|
||||||
RETRO_VFS_FILE_ACCESS_HINT_NONE);
|
break;
|
||||||
|
|
||||||
if (!backup_handle->core_file)
|
|
||||||
{
|
|
||||||
RARCH_ERR("[core restore] Failed to open core file: %s\n",
|
|
||||||
backup_handle->core_path);
|
|
||||||
backup_handle->status = CORE_RESTORE_END;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Get CRC value */
|
|
||||||
if (!intfstream_get_crc(backup_handle->core_file,
|
|
||||||
&backup_handle->core_crc))
|
|
||||||
{
|
|
||||||
RARCH_ERR("[core restore] Failed to determine CRC of core file: %s\n",
|
|
||||||
backup_handle->core_path);
|
|
||||||
backup_handle->status = CORE_RESTORE_END;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Close core file */
|
|
||||||
intfstream_close(backup_handle->core_file);
|
|
||||||
free(backup_handle->core_file);
|
|
||||||
backup_handle->core_file = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Go to next CRC gathering phase */
|
/* Get CRC value */
|
||||||
backup_handle->status = CORE_RESTORE_GET_BACKUP_CRC;
|
if (!intfstream_get_crc(backup_handle->core_file,
|
||||||
|
&backup_handle->core_crc))
|
||||||
|
{
|
||||||
|
RARCH_ERR("[core restore] Failed to determine CRC of core file: %s\n",
|
||||||
|
backup_handle->core_path);
|
||||||
|
backup_handle->status = CORE_RESTORE_END;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Close core file */
|
||||||
|
intfstream_close(backup_handle->core_file);
|
||||||
|
free(backup_handle->core_file);
|
||||||
|
backup_handle->core_file = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Go to next CRC gathering phase */
|
||||||
|
backup_handle->status = CORE_RESTORE_GET_BACKUP_CRC;
|
||||||
break;
|
break;
|
||||||
case CORE_RESTORE_GET_BACKUP_CRC:
|
case CORE_RESTORE_GET_BACKUP_CRC:
|
||||||
/* Get CRC value of backup file */
|
/* Get CRC value of backup file */
|
||||||
|
@ -931,7 +933,7 @@ static void task_core_restore_handler(retro_task_t *task)
|
||||||
task_finished:
|
task_finished:
|
||||||
|
|
||||||
if (task)
|
if (task)
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
|
|
||||||
free_core_backup_handle(backup_handle);
|
free_core_backup_handle(backup_handle);
|
||||||
}
|
}
|
||||||
|
@ -1072,9 +1074,9 @@ bool task_push_core_restore(const char *backup_path, const char *dir_libretro,
|
||||||
task->handler = task_core_restore_handler;
|
task->handler = task_core_restore_handler;
|
||||||
task->state = backup_handle;
|
task->state = backup_handle;
|
||||||
task->title = strdup(task_title);
|
task->title = strdup(task_title);
|
||||||
task->alternative_look = true;
|
|
||||||
task->progress = 0;
|
task->progress = 0;
|
||||||
task->callback = cb_task_core_restore;
|
task->callback = cb_task_core_restore;
|
||||||
|
task->flags |= RETRO_TASK_FLG_ALTERNATIVE_LOOK;
|
||||||
|
|
||||||
/* If core to be restored is currently loaded, must
|
/* If core to be restored is currently loaded, must
|
||||||
* unload it before pushing the task */
|
* unload it before pushing the task */
|
||||||
|
|
|
@ -285,15 +285,16 @@ static void free_core_updater_list_handle(
|
||||||
|
|
||||||
static void task_core_updater_get_list_handler(retro_task_t *task)
|
static void task_core_updater_get_list_handler(retro_task_t *task)
|
||||||
{
|
{
|
||||||
|
uint8_t flg;
|
||||||
core_updater_list_handle_t *list_handle = NULL;
|
core_updater_list_handle_t *list_handle = NULL;
|
||||||
|
|
||||||
if (!task)
|
if (!task)
|
||||||
goto task_finished;
|
goto task_finished;
|
||||||
|
|
||||||
if (!(list_handle = (core_updater_list_handle_t*)task->state))
|
list_handle = (core_updater_list_handle_t*)task->state;
|
||||||
goto task_finished;
|
flg = task_get_flags(task);
|
||||||
|
|
||||||
if (task_get_cancelled(task))
|
if (!list_handle || ((flg & RETRO_TASK_FLG_CANCELLED) > 0))
|
||||||
goto task_finished;
|
goto task_finished;
|
||||||
|
|
||||||
switch (list_handle->status)
|
switch (list_handle->status)
|
||||||
|
@ -363,10 +364,16 @@ static void task_core_updater_get_list_handler(retro_task_t *task)
|
||||||
/* Otherwise, check if HTTP task is still running */
|
/* Otherwise, check if HTTP task is still running */
|
||||||
else if (!list_handle->http_task_finished)
|
else if (!list_handle->http_task_finished)
|
||||||
{
|
{
|
||||||
|
uint8_t _flg = task_get_flags(list_handle->http_task);
|
||||||
|
|
||||||
|
if ((_flg & (RETRO_TASK_FLG_FINISHED)) > 0)
|
||||||
|
list_handle->http_task_finished = true;
|
||||||
|
else
|
||||||
|
list_handle->http_task_finished = false;
|
||||||
|
|
||||||
/* If HTTP task is running, copy current
|
/* If HTTP task is running, copy current
|
||||||
* progress value to *this* task */
|
* progress value to *this* task */
|
||||||
if (!(list_handle->http_task_finished =
|
if (!list_handle->http_task_finished)
|
||||||
task_get_finished(list_handle->http_task)))
|
|
||||||
task_set_progress(
|
task_set_progress(
|
||||||
task, task_get_progress(list_handle->http_task));
|
task, task_get_progress(list_handle->http_task));
|
||||||
}
|
}
|
||||||
|
@ -423,7 +430,7 @@ static void task_core_updater_get_list_handler(retro_task_t *task)
|
||||||
|
|
||||||
task_finished:
|
task_finished:
|
||||||
if (task)
|
if (task)
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
|
|
||||||
if (list_handle)
|
if (list_handle)
|
||||||
free_core_updater_list_handle(list_handle);
|
free_core_updater_list_handle(list_handle);
|
||||||
|
@ -490,10 +497,13 @@ void *task_push_get_core_updater_list(
|
||||||
/* Configure task */
|
/* Configure task */
|
||||||
task->handler = task_core_updater_get_list_handler;
|
task->handler = task_core_updater_get_list_handler;
|
||||||
task->state = list_handle;
|
task->state = list_handle;
|
||||||
task->mute = mute;
|
|
||||||
task->title = strdup(msg_hash_to_str(MSG_FETCHING_CORE_LIST));
|
task->title = strdup(msg_hash_to_str(MSG_FETCHING_CORE_LIST));
|
||||||
task->alternative_look = true;
|
|
||||||
task->progress = 0;
|
task->progress = 0;
|
||||||
|
task->flags |= RETRO_TASK_FLG_ALTERNATIVE_LOOK;
|
||||||
|
if (mute)
|
||||||
|
task->flags |= RETRO_TASK_FLG_MUTE;
|
||||||
|
else
|
||||||
|
task->flags &= ~RETRO_TASK_FLG_MUTE;
|
||||||
|
|
||||||
/* Push task */
|
/* Push task */
|
||||||
task_queue_push(task);
|
task_queue_push(task);
|
||||||
|
@ -682,15 +692,16 @@ static void free_core_updater_download_handle(core_updater_download_handle_t *do
|
||||||
|
|
||||||
static void task_core_updater_download_handler(retro_task_t *task)
|
static void task_core_updater_download_handler(retro_task_t *task)
|
||||||
{
|
{
|
||||||
|
uint8_t flg;
|
||||||
core_updater_download_handle_t *download_handle = NULL;
|
core_updater_download_handle_t *download_handle = NULL;
|
||||||
|
|
||||||
if (!task)
|
if (!task)
|
||||||
goto task_finished;
|
goto task_finished;
|
||||||
|
|
||||||
if (!(download_handle = (core_updater_download_handle_t*)task->state))
|
download_handle = (core_updater_download_handle_t*)task->state;
|
||||||
goto task_finished;
|
flg = task_get_flags(task);
|
||||||
|
|
||||||
if (task_get_cancelled(task))
|
if (!download_handle || ((flg & RETRO_TASK_FLG_CANCELLED) > 0))
|
||||||
goto task_finished;
|
goto task_finished;
|
||||||
|
|
||||||
switch (download_handle->status)
|
switch (download_handle->status)
|
||||||
|
@ -783,7 +794,12 @@ static void task_core_updater_download_handler(retro_task_t *task)
|
||||||
* by definition */
|
* by definition */
|
||||||
if (download_handle->backup_task)
|
if (download_handle->backup_task)
|
||||||
{
|
{
|
||||||
backup_complete = task_get_finished(download_handle->backup_task);
|
uint8_t _flg = task_get_flags(download_handle->backup_task);
|
||||||
|
|
||||||
|
if ((_flg & RETRO_TASK_FLG_FINISHED) > 0)
|
||||||
|
backup_complete = true;
|
||||||
|
else
|
||||||
|
backup_complete = false;
|
||||||
|
|
||||||
/* If backup task is running, copy current
|
/* If backup task is running, copy current
|
||||||
* progress value to *this* task */
|
* progress value to *this* task */
|
||||||
|
@ -853,8 +869,12 @@ static void task_core_updater_download_handler(retro_task_t *task)
|
||||||
/* Otherwise, check if HTTP task is still running */
|
/* Otherwise, check if HTTP task is still running */
|
||||||
else if (!download_handle->http_task_finished)
|
else if (!download_handle->http_task_finished)
|
||||||
{
|
{
|
||||||
download_handle->http_task_finished =
|
uint8_t _flg = task_get_flags(download_handle->http_task);
|
||||||
task_get_finished(download_handle->http_task);
|
|
||||||
|
if ((_flg & RETRO_TASK_FLG_FINISHED) > 0)
|
||||||
|
download_handle->http_task_finished = true;
|
||||||
|
else
|
||||||
|
download_handle->http_task_finished = false;
|
||||||
|
|
||||||
/* If HTTP task is running, copy current
|
/* If HTTP task is running, copy current
|
||||||
* progress value to *this* task */
|
* progress value to *this* task */
|
||||||
|
@ -907,8 +927,12 @@ static void task_core_updater_download_handler(retro_task_t *task)
|
||||||
if (download_handle->decompress_task &&
|
if (download_handle->decompress_task &&
|
||||||
!download_handle->decompress_task_finished)
|
!download_handle->decompress_task_finished)
|
||||||
{
|
{
|
||||||
download_handle->decompress_task_finished =
|
uint8_t _flg = task_get_flags(download_handle->decompress_task);
|
||||||
task_get_finished(download_handle->decompress_task);
|
|
||||||
|
if ((_flg & RETRO_TASK_FLG_FINISHED) > 0)
|
||||||
|
download_handle->decompress_task_finished = true;
|
||||||
|
else
|
||||||
|
download_handle->decompress_task_finished = false;
|
||||||
|
|
||||||
/* If decompression task is running, copy
|
/* If decompression task is running, copy
|
||||||
* current progress value to *this* task */
|
* current progress value to *this* task */
|
||||||
|
@ -981,7 +1005,7 @@ static void task_core_updater_download_handler(retro_task_t *task)
|
||||||
task_finished:
|
task_finished:
|
||||||
|
|
||||||
if (task)
|
if (task)
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
|
|
||||||
if (download_handle)
|
if (download_handle)
|
||||||
free_core_updater_download_handle(download_handle);
|
free_core_updater_download_handle(download_handle);
|
||||||
|
@ -1117,11 +1141,14 @@ void *task_push_core_updater_download(
|
||||||
|
|
||||||
task->handler = task_core_updater_download_handler;
|
task->handler = task_core_updater_download_handler;
|
||||||
task->state = download_handle;
|
task->state = download_handle;
|
||||||
task->mute = mute;
|
|
||||||
task->title = strdup(task_title);
|
task->title = strdup(task_title);
|
||||||
task->alternative_look = true;
|
|
||||||
task->progress = 0;
|
task->progress = 0;
|
||||||
task->callback = cb_task_core_updater_download;
|
task->callback = cb_task_core_updater_download;
|
||||||
|
task->flags |= RETRO_TASK_FLG_ALTERNATIVE_LOOK;
|
||||||
|
if (mute)
|
||||||
|
task->flags |= RETRO_TASK_FLG_MUTE;
|
||||||
|
else
|
||||||
|
task->flags &= ~RETRO_TASK_FLG_MUTE;
|
||||||
|
|
||||||
/* Push task */
|
/* Push task */
|
||||||
task_queue_push(task);
|
task_queue_push(task);
|
||||||
|
@ -1165,17 +1192,16 @@ static void free_update_installed_cores_handle(
|
||||||
|
|
||||||
static void task_update_installed_cores_handler(retro_task_t *task)
|
static void task_update_installed_cores_handler(retro_task_t *task)
|
||||||
{
|
{
|
||||||
|
uint8_t flg;
|
||||||
update_installed_cores_handle_t *update_installed_handle = NULL;
|
update_installed_cores_handle_t *update_installed_handle = NULL;
|
||||||
|
|
||||||
if (!task)
|
if (!task)
|
||||||
goto task_finished;
|
goto task_finished;
|
||||||
|
|
||||||
update_installed_handle = (update_installed_cores_handle_t*)task->state;
|
update_installed_handle = (update_installed_cores_handle_t*)task->state;
|
||||||
|
flg = task_get_flags(task);
|
||||||
|
|
||||||
if (!update_installed_handle)
|
if (!update_installed_handle || ((flg & RETRO_TASK_FLG_CANCELLED) > 0))
|
||||||
goto task_finished;
|
|
||||||
|
|
||||||
if (task_get_cancelled(task))
|
|
||||||
goto task_finished;
|
goto task_finished;
|
||||||
|
|
||||||
switch (update_installed_handle->status)
|
switch (update_installed_handle->status)
|
||||||
|
@ -1204,9 +1230,15 @@ static void task_update_installed_cores_handler(retro_task_t *task)
|
||||||
* > If task is NULL, then it is finished
|
* > If task is NULL, then it is finished
|
||||||
* by definition */
|
* by definition */
|
||||||
if (update_installed_handle->list_task)
|
if (update_installed_handle->list_task)
|
||||||
list_available = task_get_finished(update_installed_handle->list_task);
|
{
|
||||||
|
uint8_t _flg = task_get_flags(update_installed_handle->list_task);
|
||||||
|
if ((_flg & RETRO_TASK_FLG_FINISHED) > 0)
|
||||||
|
list_available = true;
|
||||||
|
else
|
||||||
|
list_available = false;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
list_available = true;
|
list_available = true;
|
||||||
|
|
||||||
/* If list is available, make sure it isn't empty
|
/* If list is available, make sure it isn't empty
|
||||||
* (error will message will be displayed when
|
* (error will message will be displayed when
|
||||||
|
@ -1382,7 +1414,13 @@ static void task_update_installed_cores_handler(retro_task_t *task)
|
||||||
* > If task is NULL, then it is finished
|
* > If task is NULL, then it is finished
|
||||||
* by definition */
|
* by definition */
|
||||||
if (update_installed_handle->download_task)
|
if (update_installed_handle->download_task)
|
||||||
download_complete = task_get_finished(update_installed_handle->download_task);
|
{
|
||||||
|
uint8_t _flg = task_get_flags(update_installed_handle->download_task);
|
||||||
|
if ((_flg & RETRO_TASK_FLG_FINISHED) > 0)
|
||||||
|
download_complete = true;
|
||||||
|
else
|
||||||
|
download_complete = false;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
download_complete = true;
|
download_complete = true;
|
||||||
|
|
||||||
|
@ -1453,7 +1491,7 @@ static void task_update_installed_cores_handler(retro_task_t *task)
|
||||||
|
|
||||||
task_finished:
|
task_finished:
|
||||||
if (task)
|
if (task)
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
|
|
||||||
if (update_installed_handle)
|
if (update_installed_handle)
|
||||||
free_update_installed_cores_handle(update_installed_handle);
|
free_update_installed_cores_handle(update_installed_handle);
|
||||||
|
@ -1549,7 +1587,7 @@ static void task_update_single_core_handler(retro_task_t *task)
|
||||||
case UPDATE_SINGLE_CORE_END:
|
case UPDATE_SINGLE_CORE_END:
|
||||||
default:
|
default:
|
||||||
task_set_progress(task, 100);
|
task_set_progress(task, 100);
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1633,8 +1671,8 @@ void task_push_update_installed_cores(
|
||||||
task->handler = task_update_installed_cores_handler;
|
task->handler = task_update_installed_cores_handler;
|
||||||
task->state = update_installed_handle;
|
task->state = update_installed_handle;
|
||||||
task->title = strdup(msg_hash_to_str(MSG_FETCHING_CORE_LIST));
|
task->title = strdup(msg_hash_to_str(MSG_FETCHING_CORE_LIST));
|
||||||
task->alternative_look = true;
|
|
||||||
task->progress = 0;
|
task->progress = 0;
|
||||||
|
task->flags |= RETRO_TASK_FLG_ALTERNATIVE_LOOK;
|
||||||
|
|
||||||
/* Push task */
|
/* Push task */
|
||||||
task_queue_push(task);
|
task_queue_push(task);
|
||||||
|
@ -1745,16 +1783,16 @@ static void free_play_feature_delivery_install_handle(
|
||||||
static void task_play_feature_delivery_core_install_handler(
|
static void task_play_feature_delivery_core_install_handler(
|
||||||
retro_task_t *task)
|
retro_task_t *task)
|
||||||
{
|
{
|
||||||
|
uint8_t flg;
|
||||||
play_feature_delivery_install_handle_t *pfd_install_handle = NULL;
|
play_feature_delivery_install_handle_t *pfd_install_handle = NULL;
|
||||||
|
|
||||||
if (!task)
|
if (!task)
|
||||||
goto task_finished;
|
goto task_finished;
|
||||||
|
|
||||||
if (!(pfd_install_handle =
|
pfd_install_handle =
|
||||||
(play_feature_delivery_install_handle_t*)task->state))
|
(play_feature_delivery_install_handle_t*)task->state;
|
||||||
goto task_finished;
|
|
||||||
|
|
||||||
if (task_get_cancelled(task))
|
if (!pfd_install_handle || ((flg & RETRO_TASK_FLG_CANCELLED) > 0))
|
||||||
goto task_finished;
|
goto task_finished;
|
||||||
|
|
||||||
switch (pfd_install_handle->status)
|
switch (pfd_install_handle->status)
|
||||||
|
@ -1886,6 +1924,7 @@ static void task_play_feature_delivery_core_install_handler(
|
||||||
case PLAY_FEATURE_DELIVERY_INSTALL_END:
|
case PLAY_FEATURE_DELIVERY_INSTALL_END:
|
||||||
{
|
{
|
||||||
size_t _len;
|
size_t _len;
|
||||||
|
uint8_t _flg;
|
||||||
char task_title[128];
|
char task_title[128];
|
||||||
const char *msg_str = msg_hash_to_str(MSG_CORE_INSTALL_FAILED);
|
const char *msg_str = msg_hash_to_str(MSG_CORE_INSTALL_FAILED);
|
||||||
|
|
||||||
|
@ -1928,8 +1967,10 @@ static void task_play_feature_delivery_core_install_handler(
|
||||||
/* If task is muted and install failed, set
|
/* If task is muted and install failed, set
|
||||||
* error string (allows status to be checked
|
* error string (allows status to be checked
|
||||||
* externally) */
|
* externally) */
|
||||||
if (!pfd_install_handle->success &&
|
_flg = task_get_flags(task);
|
||||||
task_get_mute(task))
|
|
||||||
|
if ( !pfd_install_handle->success
|
||||||
|
&& ((_flg & RETRO_TASK_FLG_MUTE) > 0))
|
||||||
task_set_error(task, strdup(task_title));
|
task_set_error(task, strdup(task_title));
|
||||||
}
|
}
|
||||||
/* fall-through */
|
/* fall-through */
|
||||||
|
@ -1943,7 +1984,7 @@ static void task_play_feature_delivery_core_install_handler(
|
||||||
task_finished:
|
task_finished:
|
||||||
|
|
||||||
if (task)
|
if (task)
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
|
|
||||||
if (pfd_install_handle)
|
if (pfd_install_handle)
|
||||||
free_play_feature_delivery_install_handle(pfd_install_handle);
|
free_play_feature_delivery_install_handle(pfd_install_handle);
|
||||||
|
@ -2073,16 +2114,17 @@ static void free_play_feature_delivery_switch_cores_handle(
|
||||||
static void task_play_feature_delivery_switch_cores_handler(
|
static void task_play_feature_delivery_switch_cores_handler(
|
||||||
retro_task_t *task)
|
retro_task_t *task)
|
||||||
{
|
{
|
||||||
|
uint8_t flg;
|
||||||
play_feature_delivery_switch_cores_handle_t *pfd_switch_cores_handle = NULL;
|
play_feature_delivery_switch_cores_handle_t *pfd_switch_cores_handle = NULL;
|
||||||
|
|
||||||
if (!task)
|
if (!task)
|
||||||
goto task_finished;
|
goto task_finished;
|
||||||
|
|
||||||
if (!(pfd_switch_cores_handle =
|
pfd_switch_cores_handle =
|
||||||
(play_feature_delivery_switch_cores_handle_t*)task->state))
|
(play_feature_delivery_switch_cores_handle_t*)task->state;
|
||||||
goto task_finished;
|
flg = task_get_flags(task);
|
||||||
|
|
||||||
if (task_get_cancelled(task))
|
if (!pfd_switch_cores_handle || ((flg & RETRO_TASK_FLG_CANCELLED) > 0))
|
||||||
goto task_finished;
|
goto task_finished;
|
||||||
|
|
||||||
switch (pfd_switch_cores_handle->status)
|
switch (pfd_switch_cores_handle->status)
|
||||||
|
@ -2260,10 +2302,12 @@ static void task_play_feature_delivery_switch_cores_handler(
|
||||||
* definition */
|
* definition */
|
||||||
if (pfd_switch_cores_handle->install_task)
|
if (pfd_switch_cores_handle->install_task)
|
||||||
{
|
{
|
||||||
|
uint8_t _flg = task_get_flags(pfd_switch_cores_handle->install_task);
|
||||||
|
|
||||||
error_msg = task_get_error(
|
error_msg = task_get_error(
|
||||||
pfd_switch_cores_handle->install_task);
|
pfd_switch_cores_handle->install_task);
|
||||||
install_complete = task_get_finished(
|
if ((_flg & RETRO_TASK_FLG_FINISHED) > 0)
|
||||||
pfd_switch_cores_handle->install_task);
|
install_complete = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
install_complete = true;
|
install_complete = true;
|
||||||
|
@ -2321,7 +2365,7 @@ static void task_play_feature_delivery_switch_cores_handler(
|
||||||
|
|
||||||
task_finished:
|
task_finished:
|
||||||
if (task)
|
if (task)
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
|
|
||||||
if (pfd_switch_cores_handle)
|
if (pfd_switch_cores_handle)
|
||||||
free_play_feature_delivery_switch_cores_handle(pfd_switch_cores_handle);
|
free_play_feature_delivery_switch_cores_handle(pfd_switch_cores_handle);
|
||||||
|
|
|
@ -1218,6 +1218,7 @@ static void task_database_cleanup_state(
|
||||||
|
|
||||||
static void task_database_handler(retro_task_t *task)
|
static void task_database_handler(retro_task_t *task)
|
||||||
{
|
{
|
||||||
|
uint8_t flg;
|
||||||
const char *name = NULL;
|
const char *name = NULL;
|
||||||
database_info_handle_t *dbinfo = NULL;
|
database_info_handle_t *dbinfo = NULL;
|
||||||
database_state_handle_t *dbstate = NULL;
|
database_state_handle_t *dbstate = NULL;
|
||||||
|
@ -1253,8 +1254,9 @@ static void task_database_handler(retro_task_t *task)
|
||||||
|
|
||||||
dbinfo = db->handle;
|
dbinfo = db->handle;
|
||||||
dbstate = &db->state;
|
dbstate = &db->state;
|
||||||
|
flg = task_get_flags(task);
|
||||||
|
|
||||||
if (!dbinfo || task_get_cancelled(task))
|
if (!dbinfo || ((flg & RETRO_TASK_FLG_CANCELLED) > 0))
|
||||||
goto task_finished;
|
goto task_finished;
|
||||||
|
|
||||||
switch (dbinfo->status)
|
switch (dbinfo->status)
|
||||||
|
@ -1382,7 +1384,7 @@ static void task_database_handler(retro_task_t *task)
|
||||||
|
|
||||||
task_finished:
|
task_finished:
|
||||||
if (task)
|
if (task)
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
|
|
||||||
if (dbstate)
|
if (dbstate)
|
||||||
{
|
{
|
||||||
|
@ -1415,7 +1417,7 @@ static void task_database_progress_cb(retro_task_t *task)
|
||||||
{
|
{
|
||||||
if (task)
|
if (task)
|
||||||
video_display_server_set_window_progress(task->progress,
|
video_display_server_set_window_progress(task->progress,
|
||||||
task->finished);
|
((task->flags & RETRO_TASK_FLG_FINISHED) > 0));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -1441,8 +1443,7 @@ bool task_push_dbscan(
|
||||||
t->callback = cb;
|
t->callback = cb;
|
||||||
t->title = strdup(msg_hash_to_str(
|
t->title = strdup(msg_hash_to_str(
|
||||||
MSG_PREPARING_FOR_CONTENT_SCAN));
|
MSG_PREPARING_FOR_CONTENT_SCAN));
|
||||||
t->alternative_look = true;
|
t->flags |= RETRO_TASK_FLG_ALTERNATIVE_LOOK;
|
||||||
|
|
||||||
#ifdef RARCH_INTERNAL
|
#ifdef RARCH_INTERNAL
|
||||||
t->progress_cb = task_database_progress_cb;
|
t->progress_cb = task_database_progress_cb;
|
||||||
if (settings->bools.scan_without_core_match)
|
if (settings->bools.scan_without_core_match)
|
||||||
|
|
|
@ -128,9 +128,11 @@ error:
|
||||||
static void task_decompress_handler_finished(retro_task_t *task,
|
static void task_decompress_handler_finished(retro_task_t *task,
|
||||||
decompress_state_t *dec)
|
decompress_state_t *dec)
|
||||||
{
|
{
|
||||||
task_set_finished(task, true);
|
uint8_t flg;
|
||||||
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
|
flg = task_get_flags(task);
|
||||||
|
|
||||||
if (!task_get_error(task) && task_get_cancelled(task))
|
if (!task_get_error(task) && ((flg & RETRO_TASK_FLG_CANCELLED) > 0))
|
||||||
task_set_error(task, strdup("Task canceled"));
|
task_set_error(task, strdup("Task canceled"));
|
||||||
|
|
||||||
if (task_get_error(task))
|
if (task_get_error(task))
|
||||||
|
@ -157,9 +159,9 @@ static void task_decompress_handler_finished(retro_task_t *task,
|
||||||
static void task_decompress_handler(retro_task_t *task)
|
static void task_decompress_handler(retro_task_t *task)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
bool retdec = false;
|
uint8_t flg;
|
||||||
decompress_state_t *dec = (decompress_state_t*)
|
bool retdec = false;
|
||||||
task->state;
|
decompress_state_t *dec = (decompress_state_t*)task->state;
|
||||||
|
|
||||||
dec->userdata->dec = dec;
|
dec->userdata->dec = dec;
|
||||||
strlcpy(dec->userdata->archive_path,
|
strlcpy(dec->userdata->archive_path,
|
||||||
|
@ -173,7 +175,9 @@ static void task_decompress_handler(retro_task_t *task)
|
||||||
task_set_progress(task,
|
task_set_progress(task,
|
||||||
file_archive_parse_file_progress(&dec->archive));
|
file_archive_parse_file_progress(&dec->archive));
|
||||||
|
|
||||||
if (task_get_cancelled(task) || ret != 0)
|
flg = task_get_flags(task);
|
||||||
|
|
||||||
|
if (((flg & RETRO_TASK_FLG_CANCELLED) > 0) || ret != 0)
|
||||||
{
|
{
|
||||||
task_set_error(task, dec->callback_error);
|
task_set_error(task, dec->callback_error);
|
||||||
file_archive_parse_file_iterate_stop(&dec->archive);
|
file_archive_parse_file_iterate_stop(&dec->archive);
|
||||||
|
@ -184,10 +188,10 @@ static void task_decompress_handler(retro_task_t *task)
|
||||||
|
|
||||||
static void task_decompress_handler_target_file(retro_task_t *task)
|
static void task_decompress_handler_target_file(retro_task_t *task)
|
||||||
{
|
{
|
||||||
bool retdec;
|
|
||||||
int ret;
|
int ret;
|
||||||
decompress_state_t *dec = (decompress_state_t*)
|
uint8_t flg;
|
||||||
task->state;
|
bool retdec;
|
||||||
|
decompress_state_t *dec = (decompress_state_t*)task->state;
|
||||||
|
|
||||||
strlcpy(dec->userdata->archive_path,
|
strlcpy(dec->userdata->archive_path,
|
||||||
dec->source_file, sizeof(dec->userdata->archive_path));
|
dec->source_file, sizeof(dec->userdata->archive_path));
|
||||||
|
@ -199,7 +203,9 @@ static void task_decompress_handler_target_file(retro_task_t *task)
|
||||||
task_set_progress(task,
|
task_set_progress(task,
|
||||||
file_archive_parse_file_progress(&dec->archive));
|
file_archive_parse_file_progress(&dec->archive));
|
||||||
|
|
||||||
if (task_get_cancelled(task) || ret != 0)
|
flg = task_get_flags(task);
|
||||||
|
|
||||||
|
if (((flg & RETRO_TASK_FLG_CANCELLED) > 0) || ret != 0)
|
||||||
{
|
{
|
||||||
task_set_error(task, dec->callback_error);
|
task_set_error(task, dec->callback_error);
|
||||||
file_archive_parse_file_iterate_stop(&dec->archive);
|
file_archive_parse_file_iterate_stop(&dec->archive);
|
||||||
|
@ -211,10 +217,11 @@ static void task_decompress_handler_target_file(retro_task_t *task)
|
||||||
static void task_decompress_handler_subdir(retro_task_t *task)
|
static void task_decompress_handler_subdir(retro_task_t *task)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
uint8_t flg;
|
||||||
bool retdec;
|
bool retdec;
|
||||||
decompress_state_t *dec = (decompress_state_t*)task->state;
|
decompress_state_t *dec = (decompress_state_t*)task->state;
|
||||||
|
|
||||||
dec->userdata->dec = dec;
|
dec->userdata->dec = dec;
|
||||||
strlcpy(dec->userdata->archive_path,
|
strlcpy(dec->userdata->archive_path,
|
||||||
dec->source_file,
|
dec->source_file,
|
||||||
sizeof(dec->userdata->archive_path));
|
sizeof(dec->userdata->archive_path));
|
||||||
|
@ -227,7 +234,9 @@ static void task_decompress_handler_subdir(retro_task_t *task)
|
||||||
task_set_progress(task,
|
task_set_progress(task,
|
||||||
file_archive_parse_file_progress(&dec->archive));
|
file_archive_parse_file_progress(&dec->archive));
|
||||||
|
|
||||||
if (task_get_cancelled(task) || ret != 0)
|
flg = task_get_flags(task);
|
||||||
|
|
||||||
|
if (((flg & RETRO_TASK_FLG_CANCELLED) > 0) || ret != 0)
|
||||||
{
|
{
|
||||||
task_set_error(task, dec->callback_error);
|
task_set_error(task, dec->callback_error);
|
||||||
file_archive_parse_file_iterate_stop(&dec->archive);
|
file_archive_parse_file_iterate_stop(&dec->archive);
|
||||||
|
@ -350,7 +359,10 @@ void *task_push_decompress(
|
||||||
tmp[++_len] = '\0';
|
tmp[++_len] = '\0';
|
||||||
|
|
||||||
t->title = strdup(tmp);
|
t->title = strdup(tmp);
|
||||||
t->mute = mute;
|
if (mute)
|
||||||
|
t->flags |= RETRO_TASK_FLG_MUTE;
|
||||||
|
else
|
||||||
|
t->flags &= ~RETRO_TASK_FLG_MUTE;
|
||||||
|
|
||||||
task_queue_push(t);
|
task_queue_push(t);
|
||||||
|
|
||||||
|
|
|
@ -60,6 +60,7 @@ static int task_file_transfer_iterate_parse(nbio_handle_t *nbio)
|
||||||
|
|
||||||
void task_file_load_handler(retro_task_t *task)
|
void task_file_load_handler(retro_task_t *task)
|
||||||
{
|
{
|
||||||
|
uint8_t flg;
|
||||||
nbio_handle_t *nbio = (nbio_handle_t*)task->state;
|
nbio_handle_t *nbio = (nbio_handle_t*)task->state;
|
||||||
|
|
||||||
if (nbio)
|
if (nbio)
|
||||||
|
@ -80,12 +81,12 @@ void task_file_load_handler(retro_task_t *task)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
task_set_cancelled(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_CANCELLED, true);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case NBIO_STATUS_TRANSFER_PARSE:
|
case NBIO_STATUS_TRANSFER_PARSE:
|
||||||
if (!nbio || task_file_transfer_iterate_parse(nbio) == -1)
|
if (!nbio || task_file_transfer_iterate_parse(nbio) == -1)
|
||||||
task_set_cancelled(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_CANCELLED, true);
|
||||||
nbio->status = NBIO_STATUS_TRANSFER_FINISHED;
|
nbio->status = NBIO_STATUS_TRANSFER_FINISHED;
|
||||||
break;
|
break;
|
||||||
case NBIO_STATUS_TRANSFER:
|
case NBIO_STATUS_TRANSFER:
|
||||||
|
@ -103,7 +104,7 @@ void task_file_load_handler(retro_task_t *task)
|
||||||
case NBIO_TYPE_TGA:
|
case NBIO_TYPE_TGA:
|
||||||
case NBIO_TYPE_BMP:
|
case NBIO_TYPE_BMP:
|
||||||
if (!task_image_load_handler(task))
|
if (!task_image_load_handler(task))
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
break;
|
break;
|
||||||
case NBIO_TYPE_MP3:
|
case NBIO_TYPE_MP3:
|
||||||
case NBIO_TYPE_FLAC:
|
case NBIO_TYPE_FLAC:
|
||||||
|
@ -112,20 +113,22 @@ void task_file_load_handler(retro_task_t *task)
|
||||||
case NBIO_TYPE_WAV:
|
case NBIO_TYPE_WAV:
|
||||||
#ifdef HAVE_AUDIOMIXER
|
#ifdef HAVE_AUDIOMIXER
|
||||||
if (!task_audio_mixer_load_handler(task))
|
if (!task_audio_mixer_load_handler(task))
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
case NBIO_TYPE_NONE:
|
case NBIO_TYPE_NONE:
|
||||||
default:
|
default:
|
||||||
if (nbio->is_finished)
|
if (nbio->is_finished)
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (task_get_cancelled(task))
|
flg = task_get_flags(task);
|
||||||
|
|
||||||
|
if ((flg & RETRO_TASK_FLG_CANCELLED) > 0)
|
||||||
{
|
{
|
||||||
task_set_error(task, strldup("Task canceled.", sizeof("Task canceled.")));
|
task_set_error(task, strldup("Task canceled.", sizeof("Task canceled.")));
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -143,8 +143,9 @@ static void task_http_transfer_handler(retro_task_t *task)
|
||||||
{
|
{
|
||||||
http_transfer_data_t *data = NULL;
|
http_transfer_data_t *data = NULL;
|
||||||
http_handle_t *http = (http_handle_t*)task->state;
|
http_handle_t *http = (http_handle_t*)task->state;
|
||||||
|
uint8_t flg = task_get_flags(task);
|
||||||
|
|
||||||
if (task_get_cancelled(task))
|
if ((flg & RETRO_TASK_FLG_CANCELLED) > 0)
|
||||||
goto task_finished;
|
goto task_finished;
|
||||||
|
|
||||||
switch (http->status)
|
switch (http->status)
|
||||||
|
@ -172,7 +173,7 @@ static void task_http_transfer_handler(retro_task_t *task)
|
||||||
|
|
||||||
return;
|
return;
|
||||||
task_finished:
|
task_finished:
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
|
|
||||||
if (http->handle)
|
if (http->handle)
|
||||||
{
|
{
|
||||||
|
@ -186,7 +187,7 @@ task_finished:
|
||||||
if (!tmp)
|
if (!tmp)
|
||||||
tmp = (char*)net_http_data(http->handle, &len, true);
|
tmp = (char*)net_http_data(http->handle, &len, true);
|
||||||
|
|
||||||
if (task_get_cancelled(task))
|
if ((flg & RETRO_TASK_FLG_CANCELLED) > 0)
|
||||||
{
|
{
|
||||||
if (tmp)
|
if (tmp)
|
||||||
free(tmp);
|
free(tmp);
|
||||||
|
@ -197,6 +198,7 @@ task_finished:
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
bool mute;
|
||||||
data = (http_transfer_data_t*)malloc(sizeof(*data));
|
data = (http_transfer_data_t*)malloc(sizeof(*data));
|
||||||
data->data = tmp;
|
data->data = tmp;
|
||||||
data->headers = headers;
|
data->headers = headers;
|
||||||
|
@ -205,7 +207,9 @@ task_finished:
|
||||||
|
|
||||||
task_set_data(task, data);
|
task_set_data(task, data);
|
||||||
|
|
||||||
if (!task->mute && net_http_error(http->handle))
|
mute = ((task->flags & RETRO_TASK_FLG_MUTE) > 0);
|
||||||
|
|
||||||
|
if (!mute && net_http_error(http->handle))
|
||||||
task_set_error(task, strldup("Download failed.",
|
task_set_error(task, strldup("Download failed.",
|
||||||
sizeof("Download failed.")));
|
sizeof("Download failed.")));
|
||||||
}
|
}
|
||||||
|
@ -257,7 +261,8 @@ static void http_transfer_progress_cb(retro_task_t *task)
|
||||||
{
|
{
|
||||||
#ifdef RARCH_INTERNAL
|
#ifdef RARCH_INTERNAL
|
||||||
if (task)
|
if (task)
|
||||||
video_display_server_set_window_progress(task->progress, task->finished);
|
video_display_server_set_window_progress(task->progress,
|
||||||
|
((task->flags & RETRO_TASK_FLG_FINISHED) > 0));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -320,12 +325,15 @@ static void *task_push_http_transfer_generic(
|
||||||
|
|
||||||
t->handler = task_http_transfer_handler;
|
t->handler = task_http_transfer_handler;
|
||||||
t->state = http;
|
t->state = http;
|
||||||
t->mute = mute;
|
|
||||||
t->callback = cb;
|
t->callback = cb;
|
||||||
t->progress_cb = http_transfer_progress_cb;
|
t->progress_cb = http_transfer_progress_cb;
|
||||||
t->cleanup = task_http_transfer_cleanup;
|
t->cleanup = task_http_transfer_cleanup;
|
||||||
t->user_data = user_data;
|
t->user_data = user_data;
|
||||||
t->progress = -1;
|
t->progress = -1;
|
||||||
|
if (mute)
|
||||||
|
t->flags |= RETRO_TASK_FLG_MUTE;
|
||||||
|
else
|
||||||
|
t->flags &= ~RETRO_TASK_FLG_MUTE;
|
||||||
|
|
||||||
task_queue_push(t);
|
task_queue_push(t);
|
||||||
|
|
||||||
|
|
|
@ -150,7 +150,7 @@ static int task_image_iterate_process_transfer(struct nbio_image_handle *image)
|
||||||
{
|
{
|
||||||
if ((retval = task_image_process(image, &width, &height)) != IMAGE_PROCESS_NEXT)
|
if ((retval = task_image_process(image, &width, &height)) != IMAGE_PROCESS_NEXT)
|
||||||
break;
|
break;
|
||||||
}while (cpu_features_get_time_usec() - start_time
|
}while (cpu_features_get_time_usec() - start_time
|
||||||
< image->frame_duration);
|
< image->frame_duration);
|
||||||
|
|
||||||
if (retval == IMAGE_PROCESS_NEXT)
|
if (retval == IMAGE_PROCESS_NEXT)
|
||||||
|
@ -279,6 +279,7 @@ static bool upscale_image(
|
||||||
|
|
||||||
bool task_image_load_handler(retro_task_t *task)
|
bool task_image_load_handler(retro_task_t *task)
|
||||||
{
|
{
|
||||||
|
uint8_t flg;
|
||||||
nbio_handle_t *nbio = (nbio_handle_t*)task->state;
|
nbio_handle_t *nbio = (nbio_handle_t*)task->state;
|
||||||
struct nbio_image_handle *image = (struct nbio_image_handle*)nbio->data;
|
struct nbio_image_handle *image = (struct nbio_image_handle*)nbio->data;
|
||||||
|
|
||||||
|
@ -303,7 +304,7 @@ bool task_image_load_handler(retro_task_t *task)
|
||||||
image->status = IMAGE_STATUS_PROCESS_TRANSFER;
|
image->status = IMAGE_STATUS_PROCESS_TRANSFER;
|
||||||
break;
|
break;
|
||||||
case IMAGE_STATUS_TRANSFER:
|
case IMAGE_STATUS_TRANSFER:
|
||||||
if ( !(image->flags & IMAGE_FLAG_IS_BLOCKING)
|
if ( !(image->flags & IMAGE_FLAG_IS_BLOCKING)
|
||||||
&& !(image->flags & IMAGE_FLAG_IS_FINISHED))
|
&& !(image->flags & IMAGE_FLAG_IS_FINISHED))
|
||||||
{
|
{
|
||||||
retro_time_t start_time = cpu_features_get_time_usec();
|
retro_time_t start_time = cpu_features_get_time_usec();
|
||||||
|
@ -314,7 +315,7 @@ bool task_image_load_handler(retro_task_t *task)
|
||||||
image->status = IMAGE_STATUS_TRANSFER_PARSE;
|
image->status = IMAGE_STATUS_TRANSFER_PARSE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}while (cpu_features_get_time_usec() - start_time
|
}while (cpu_features_get_time_usec() - start_time
|
||||||
< image->frame_duration);
|
< image->frame_duration);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -330,9 +331,11 @@ bool task_image_load_handler(retro_task_t *task)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
flg = task_get_flags(task);
|
||||||
|
|
||||||
if ( nbio->is_finished
|
if ( nbio->is_finished
|
||||||
&& (image && (image->flags & IMAGE_FLAG_IS_FINISHED))
|
&& (image && (image->flags & IMAGE_FLAG_IS_FINISHED))
|
||||||
&& (!task_get_cancelled(task)))
|
&& ((!((flg & RETRO_TASK_FLG_CANCELLED) > 0))))
|
||||||
{
|
{
|
||||||
struct texture_image *img = (struct texture_image*)malloc(sizeof(struct texture_image));
|
struct texture_image *img = (struct texture_image*)malloc(sizeof(struct texture_image));
|
||||||
|
|
||||||
|
@ -386,7 +389,7 @@ bool task_image_load_handler(retro_task_t *task)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool task_push_image_load(const char *fullpath,
|
bool task_push_image_load(const char *fullpath,
|
||||||
bool supports_rgba, unsigned upscale_threshold,
|
bool supports_rgba, unsigned upscale_threshold,
|
||||||
retro_task_callback_t cb, void *user_data)
|
retro_task_callback_t cb, void *user_data)
|
||||||
{
|
{
|
||||||
|
|
|
@ -188,6 +188,7 @@ static void task_manual_content_scan_free(retro_task_t *task)
|
||||||
|
|
||||||
static void task_manual_content_scan_handler(retro_task_t *task)
|
static void task_manual_content_scan_handler(retro_task_t *task)
|
||||||
{
|
{
|
||||||
|
uint8_t flg;
|
||||||
manual_scan_handle_t *manual_scan = NULL;
|
manual_scan_handle_t *manual_scan = NULL;
|
||||||
|
|
||||||
if (!task)
|
if (!task)
|
||||||
|
@ -196,7 +197,9 @@ static void task_manual_content_scan_handler(retro_task_t *task)
|
||||||
if (!(manual_scan = (manual_scan_handle_t*)task->state))
|
if (!(manual_scan = (manual_scan_handle_t*)task->state))
|
||||||
goto task_finished;
|
goto task_finished;
|
||||||
|
|
||||||
if (task_get_cancelled(task))
|
flg = task_get_flags(task);
|
||||||
|
|
||||||
|
if ((flg & RETRO_TASK_FLG_CANCELLED) > 0)
|
||||||
goto task_finished;
|
goto task_finished;
|
||||||
|
|
||||||
switch (manual_scan->status)
|
switch (manual_scan->status)
|
||||||
|
@ -508,9 +511,8 @@ static void task_manual_content_scan_handler(retro_task_t *task)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
task_finished:
|
task_finished:
|
||||||
|
|
||||||
if (task)
|
if (task)
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool task_manual_content_scan_finder(retro_task_t *task, void *user_data)
|
static bool task_manual_content_scan_finder(retro_task_t *task, void *user_data)
|
||||||
|
@ -611,10 +613,10 @@ bool task_push_manual_content_scan(
|
||||||
task->handler = task_manual_content_scan_handler;
|
task->handler = task_manual_content_scan_handler;
|
||||||
task->state = manual_scan;
|
task->state = manual_scan;
|
||||||
task->title = strdup(task_title);
|
task->title = strdup(task_title);
|
||||||
task->alternative_look = true;
|
|
||||||
task->progress = 0;
|
task->progress = 0;
|
||||||
task->callback = cb_task_manual_content_scan;
|
task->callback = cb_task_manual_content_scan;
|
||||||
task->cleanup = task_manual_content_scan_free;
|
task->cleanup = task_manual_content_scan_free;
|
||||||
|
task->flags |= RETRO_TASK_FLG_ALTERNATIVE_LOOK;
|
||||||
|
|
||||||
/* > Push task */
|
/* > Push task */
|
||||||
task_queue_push(task);
|
task_queue_push(task);
|
||||||
|
|
|
@ -135,7 +135,9 @@ static void task_menu_explore_init_handler(retro_task_t *task)
|
||||||
menu_explore_init_handle_t *menu_explore = NULL;
|
menu_explore_init_handle_t *menu_explore = NULL;
|
||||||
if ((menu_explore = (menu_explore_init_handle_t*)task->state))
|
if ((menu_explore = (menu_explore_init_handle_t*)task->state))
|
||||||
{
|
{
|
||||||
if (!task_get_cancelled(task))
|
uint8_t flg = task_get_flags(task);
|
||||||
|
|
||||||
|
if (!((flg & RETRO_TASK_FLG_CANCELLED) > 0))
|
||||||
{
|
{
|
||||||
/* TODO/FIXME: It could be beneficial to
|
/* TODO/FIXME: It could be beneficial to
|
||||||
* initialise the explore menu iteratively,
|
* initialise the explore menu iteratively,
|
||||||
|
@ -152,7 +154,7 @@ static void task_menu_explore_init_handler(retro_task_t *task)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -197,11 +199,11 @@ bool task_push_menu_explore_init(const char *directory_playlist,
|
||||||
* and no user notification messages */
|
* and no user notification messages */
|
||||||
task->handler = task_menu_explore_init_handler;
|
task->handler = task_menu_explore_init_handler;
|
||||||
task->state = menu_explore;
|
task->state = menu_explore;
|
||||||
task->mute = true;
|
|
||||||
task->title = NULL;
|
task->title = NULL;
|
||||||
task->progress = 0;
|
task->progress = 0;
|
||||||
task->callback = cb_task_menu_explore_init;
|
task->callback = cb_task_menu_explore_init;
|
||||||
task->cleanup = task_menu_explore_init_free;
|
task->cleanup = task_menu_explore_init_free;
|
||||||
|
task->flags |= RETRO_TASK_FLG_MUTE;
|
||||||
|
|
||||||
task_queue_push(task);
|
task_queue_push(task);
|
||||||
|
|
||||||
|
|
|
@ -315,14 +315,16 @@ typedef struct bsv_state moviectl_task_state_t;
|
||||||
|
|
||||||
static void task_moviectl_playback_handler(retro_task_t *task)
|
static void task_moviectl_playback_handler(retro_task_t *task)
|
||||||
{
|
{
|
||||||
/* trivial handler */
|
uint8_t flg;
|
||||||
task_set_finished(task, true);
|
/* trivial handler */
|
||||||
if (!task_get_error(task) && task_get_cancelled(task))
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
task_set_error(task, strdup("Task canceled"));
|
flg = task_get_flags(task);
|
||||||
|
if (!task_get_error(task) && ((flg & RETRO_TASK_FLG_CANCELLED) > 0))
|
||||||
|
task_set_error(task, strdup("Task canceled"));
|
||||||
|
|
||||||
task_set_data(task, task->state);
|
task_set_data(task, task->state);
|
||||||
task->state = NULL;
|
task->state = NULL;
|
||||||
/* no need to free state here since I'm recycling it as data */
|
/* no need to free state here since I'm recycling it as data */
|
||||||
}
|
}
|
||||||
|
|
||||||
static void moviectl_start_playback_cb(retro_task_t *task,
|
static void moviectl_start_playback_cb(retro_task_t *task,
|
||||||
|
@ -338,13 +340,15 @@ static void moviectl_start_playback_cb(retro_task_t *task,
|
||||||
|
|
||||||
static void task_moviectl_record_handler(retro_task_t *task)
|
static void task_moviectl_record_handler(retro_task_t *task)
|
||||||
{
|
{
|
||||||
|
uint8_t flg;
|
||||||
/* Hang on until the state is loaded */
|
/* Hang on until the state is loaded */
|
||||||
if (content_load_state_in_progress(NULL))
|
if (content_load_state_in_progress(NULL))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* trivial handler */
|
/* trivial handler */
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
if (!task_get_error(task) && task_get_cancelled(task))
|
flg = task_get_flags(task);
|
||||||
|
if (!task_get_error(task) && ((flg & RETRO_TASK_FLG_CANCELLED) > 0))
|
||||||
task_set_error(task, strdup("Task canceled"));
|
task_set_error(task, strdup("Task canceled"));
|
||||||
|
|
||||||
task_set_data(task, task->state);
|
task_set_data(task, task->state);
|
||||||
|
|
|
@ -443,7 +443,7 @@ finished:
|
||||||
task_set_title(task, strdup(title));
|
task_set_title(task, strdup(title));
|
||||||
}
|
}
|
||||||
|
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef HAVE_DYNAMIC
|
#ifndef HAVE_DYNAMIC
|
||||||
|
|
|
@ -70,7 +70,7 @@ finished:
|
||||||
deinit_netplay_discovery();
|
deinit_netplay_discovery();
|
||||||
|
|
||||||
task_set_progress(task, 100);
|
task_set_progress(task, 100);
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void task_netplay_lan_scan_callback(retro_task_t *task,
|
static void task_netplay_lan_scan_callback(retro_task_t *task,
|
||||||
|
|
|
@ -293,7 +293,7 @@ static void task_netplay_nat_traversal_handler(retro_task_t *task)
|
||||||
|
|
||||||
finished:
|
finished:
|
||||||
task_set_progress(task, 100);
|
task_set_progress(task, 100);
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void task_netplay_nat_traversal_callback(retro_task_t *task,
|
static void task_netplay_nat_traversal_callback(retro_task_t *task,
|
||||||
|
|
|
@ -580,7 +580,7 @@ static void task_overlay_resolve_iterate(retro_task_t *task)
|
||||||
loader->resolve_pos, loader->size))
|
loader->resolve_pos, loader->size))
|
||||||
{
|
{
|
||||||
RARCH_ERR("[Overlay]: Failed to resolve next targets.\n");
|
RARCH_ERR("[Overlay]: Failed to resolve next targets.\n");
|
||||||
task_set_cancelled(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_CANCELLED, true);
|
||||||
loader->state = OVERLAY_STATUS_DEFERRED_ERROR;
|
loader->state = OVERLAY_STATUS_DEFERRED_ERROR;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -647,7 +647,7 @@ static void task_overlay_deferred_loading(retro_task_t *task)
|
||||||
{
|
{
|
||||||
RARCH_ERR("[Overlay]: Failed to load overlay descs for overlay #%u.\n",
|
RARCH_ERR("[Overlay]: Failed to load overlay descs for overlay #%u.\n",
|
||||||
(unsigned)overlay->pos);
|
(unsigned)overlay->pos);
|
||||||
task_set_cancelled(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_CANCELLED, true);
|
||||||
loader->state = OVERLAY_STATUS_DEFERRED_ERROR;
|
loader->state = OVERLAY_STATUS_DEFERRED_ERROR;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -668,7 +668,7 @@ static void task_overlay_deferred_loading(retro_task_t *task)
|
||||||
loader->loading_status = OVERLAY_IMAGE_TRANSFER_NONE;
|
loader->loading_status = OVERLAY_IMAGE_TRANSFER_NONE;
|
||||||
break;
|
break;
|
||||||
case OVERLAY_IMAGE_TRANSFER_ERROR:
|
case OVERLAY_IMAGE_TRANSFER_ERROR:
|
||||||
task_set_cancelled(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_CANCELLED, true);
|
||||||
loader->state = OVERLAY_STATUS_DEFERRED_ERROR;
|
loader->state = OVERLAY_STATUS_DEFERRED_ERROR;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -942,7 +942,8 @@ static void task_overlay_deferred_load(retro_task_t *task)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
task_set_cancelled(task, true);
|
if (task)
|
||||||
|
task_set_flags(task, RETRO_TASK_FLG_CANCELLED, true);
|
||||||
loader->pos = 0;
|
loader->pos = 0;
|
||||||
loader->state = OVERLAY_STATUS_DEFERRED_ERROR;
|
loader->state = OVERLAY_STATUS_DEFERRED_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -952,8 +953,9 @@ static void task_overlay_free(retro_task_t *task)
|
||||||
unsigned i;
|
unsigned i;
|
||||||
overlay_loader_t *loader = (overlay_loader_t*)task->state;
|
overlay_loader_t *loader = (overlay_loader_t*)task->state;
|
||||||
struct overlay *overlay = &loader->overlays[loader->pos];
|
struct overlay *overlay = &loader->overlays[loader->pos];
|
||||||
|
uint8_t flg = task_get_flags(task);
|
||||||
|
|
||||||
if (task_get_cancelled(task))
|
if ((flg & RETRO_TASK_FLG_CANCELLED) > 0)
|
||||||
{
|
{
|
||||||
if (loader->overlay_path)
|
if (loader->overlay_path)
|
||||||
free(loader->overlay_path);
|
free(loader->overlay_path);
|
||||||
|
@ -978,6 +980,7 @@ static void task_overlay_free(retro_task_t *task)
|
||||||
|
|
||||||
static void task_overlay_handler(retro_task_t *task)
|
static void task_overlay_handler(retro_task_t *task)
|
||||||
{
|
{
|
||||||
|
uint8_t flg;
|
||||||
overlay_loader_t *loader = (overlay_loader_t*)task->state;
|
overlay_loader_t *loader = (overlay_loader_t*)task->state;
|
||||||
|
|
||||||
switch (loader->state)
|
switch (loader->state)
|
||||||
|
@ -992,16 +995,19 @@ static void task_overlay_handler(retro_task_t *task)
|
||||||
task_overlay_resolve_iterate(task);
|
task_overlay_resolve_iterate(task);
|
||||||
break;
|
break;
|
||||||
case OVERLAY_STATUS_DEFERRED_ERROR:
|
case OVERLAY_STATUS_DEFERRED_ERROR:
|
||||||
task_set_cancelled(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_CANCELLED, true);
|
||||||
break;
|
break;
|
||||||
case OVERLAY_STATUS_DEFERRED_DONE:
|
case OVERLAY_STATUS_DEFERRED_DONE:
|
||||||
default:
|
default:
|
||||||
case OVERLAY_STATUS_NONE:
|
case OVERLAY_STATUS_NONE:
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (task_get_finished(task) && !task_get_cancelled(task))
|
flg = task_get_flags(task);
|
||||||
|
|
||||||
|
if ( ((flg & RETRO_TASK_FLG_FINISHED) > 0)
|
||||||
|
&& (!((flg & RETRO_TASK_FLG_CANCELLED) > 0)))
|
||||||
{
|
{
|
||||||
overlay_task_data_t *data = (overlay_task_data_t*)
|
overlay_task_data_t *data = (overlay_task_data_t*)
|
||||||
calloc(1, sizeof(*data));
|
calloc(1, sizeof(*data));
|
||||||
|
@ -1020,17 +1026,10 @@ static void task_overlay_handler(retro_task_t *task)
|
||||||
static bool task_overlay_finder(retro_task_t *task, void *user_data)
|
static bool task_overlay_finder(retro_task_t *task, void *user_data)
|
||||||
{
|
{
|
||||||
overlay_loader_t *loader = NULL;
|
overlay_loader_t *loader = NULL;
|
||||||
|
if (!task || (task->handler != task_overlay_handler) || !user_data)
|
||||||
if (!task || (task->handler != task_overlay_handler))
|
|
||||||
return false;
|
return false;
|
||||||
|
if (!(loader = (overlay_loader_t*)task->state))
|
||||||
if (!user_data)
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
loader = (overlay_loader_t*)task->state;
|
|
||||||
if (!loader)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
return string_is_equal(loader->overlay_path, (const char*)user_data);
|
return string_is_equal(loader->overlay_path, (const char*)user_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -367,6 +367,7 @@ static void free_pl_thumb_handle(pl_thumb_handle_t *pl_thumb)
|
||||||
|
|
||||||
static void task_pl_thumbnail_download_handler(retro_task_t *task)
|
static void task_pl_thumbnail_download_handler(retro_task_t *task)
|
||||||
{
|
{
|
||||||
|
uint8_t flg;
|
||||||
pl_thumb_handle_t *pl_thumb = NULL;
|
pl_thumb_handle_t *pl_thumb = NULL;
|
||||||
enum playlist_thumbnail_name_flags next_flag = PLAYLIST_THUMBNAIL_FLAG_INVALID;
|
enum playlist_thumbnail_name_flags next_flag = PLAYLIST_THUMBNAIL_FLAG_INVALID;
|
||||||
|
|
||||||
|
@ -376,7 +377,9 @@ static void task_pl_thumbnail_download_handler(retro_task_t *task)
|
||||||
if (!(pl_thumb = (pl_thumb_handle_t*)task->state))
|
if (!(pl_thumb = (pl_thumb_handle_t*)task->state))
|
||||||
goto task_finished;
|
goto task_finished;
|
||||||
|
|
||||||
if (task_get_cancelled(task))
|
flg = task_get_flags(task);
|
||||||
|
|
||||||
|
if ((flg & RETRO_TASK_FLG_CANCELLED) > 0)
|
||||||
goto task_finished;
|
goto task_finished;
|
||||||
|
|
||||||
switch (pl_thumb->status)
|
switch (pl_thumb->status)
|
||||||
|
@ -493,7 +496,7 @@ static void task_pl_thumbnail_download_handler(retro_task_t *task)
|
||||||
|
|
||||||
task_finished:
|
task_finished:
|
||||||
if (task)
|
if (task)
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
if (pl_thumb)
|
if (pl_thumb)
|
||||||
free_pl_thumb_handle(pl_thumb);
|
free_pl_thumb_handle(pl_thumb);
|
||||||
}
|
}
|
||||||
|
@ -573,8 +576,8 @@ bool task_push_pl_thumbnail_download(
|
||||||
task->handler = task_pl_thumbnail_download_handler;
|
task->handler = task_pl_thumbnail_download_handler;
|
||||||
task->state = pl_thumb;
|
task->state = pl_thumb;
|
||||||
task->title = strdup(system);
|
task->title = strdup(system);
|
||||||
task->alternative_look = true;
|
|
||||||
task->progress = 0;
|
task->progress = 0;
|
||||||
|
task->flags |= RETRO_TASK_FLG_ALTERNATIVE_LOOK;
|
||||||
|
|
||||||
task_queue_push(task);
|
task_queue_push(task);
|
||||||
|
|
||||||
|
@ -692,6 +695,7 @@ static void task_pl_entry_thumbnail_free(retro_task_t *task)
|
||||||
|
|
||||||
static void task_pl_entry_thumbnail_download_handler(retro_task_t *task)
|
static void task_pl_entry_thumbnail_download_handler(retro_task_t *task)
|
||||||
{
|
{
|
||||||
|
uint8_t flg;
|
||||||
pl_thumb_handle_t *pl_thumb = NULL;
|
pl_thumb_handle_t *pl_thumb = NULL;
|
||||||
|
|
||||||
if (!task)
|
if (!task)
|
||||||
|
@ -700,7 +704,9 @@ static void task_pl_entry_thumbnail_download_handler(retro_task_t *task)
|
||||||
if (!(pl_thumb = (pl_thumb_handle_t*)task->state))
|
if (!(pl_thumb = (pl_thumb_handle_t*)task->state))
|
||||||
goto task_finished;
|
goto task_finished;
|
||||||
|
|
||||||
if (task_get_cancelled(task))
|
flg = task_get_flags(task);
|
||||||
|
|
||||||
|
if ((flg & RETRO_TASK_FLG_CANCELLED) > 0)
|
||||||
goto task_finished;
|
goto task_finished;
|
||||||
|
|
||||||
switch (pl_thumb->status)
|
switch (pl_thumb->status)
|
||||||
|
@ -797,9 +803,8 @@ static void task_pl_entry_thumbnail_download_handler(retro_task_t *task)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
task_finished:
|
task_finished:
|
||||||
|
|
||||||
if (task)
|
if (task)
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool task_pl_entry_thumbnail_finder(retro_task_t *task, void *user_data)
|
static bool task_pl_entry_thumbnail_finder(retro_task_t *task, void *user_data)
|
||||||
|
@ -924,11 +929,14 @@ bool task_push_pl_entry_thumbnail_download(
|
||||||
task->handler = task_pl_entry_thumbnail_download_handler;
|
task->handler = task_pl_entry_thumbnail_download_handler;
|
||||||
task->state = pl_thumb;
|
task->state = pl_thumb;
|
||||||
task->title = strdup(system);
|
task->title = strdup(system);
|
||||||
task->alternative_look = true;
|
|
||||||
task->mute = mute;
|
|
||||||
task->progress = 0;
|
task->progress = 0;
|
||||||
task->callback = cb_task_pl_entry_thumbnail_refresh_menu;
|
task->callback = cb_task_pl_entry_thumbnail_refresh_menu;
|
||||||
task->cleanup = task_pl_entry_thumbnail_free;
|
task->cleanup = task_pl_entry_thumbnail_free;
|
||||||
|
task->flags |= RETRO_TASK_FLG_ALTERNATIVE_LOOK;
|
||||||
|
if (mute)
|
||||||
|
task->flags |= RETRO_TASK_FLG_MUTE;
|
||||||
|
else
|
||||||
|
task->flags &= ~RETRO_TASK_FLG_MUTE;
|
||||||
|
|
||||||
task_queue_push(task);
|
task_queue_push(task);
|
||||||
|
|
||||||
|
|
|
@ -149,6 +149,7 @@ static void task_pl_manager_free(retro_task_t *task)
|
||||||
|
|
||||||
static void task_pl_manager_reset_cores_handler(retro_task_t *task)
|
static void task_pl_manager_reset_cores_handler(retro_task_t *task)
|
||||||
{
|
{
|
||||||
|
uint8_t flg;
|
||||||
pl_manager_handle_t *pl_manager = NULL;
|
pl_manager_handle_t *pl_manager = NULL;
|
||||||
|
|
||||||
if (!task)
|
if (!task)
|
||||||
|
@ -159,7 +160,9 @@ static void task_pl_manager_reset_cores_handler(retro_task_t *task)
|
||||||
if (!pl_manager)
|
if (!pl_manager)
|
||||||
goto task_finished;
|
goto task_finished;
|
||||||
|
|
||||||
if (task_get_cancelled(task))
|
flg = task_get_flags(task);
|
||||||
|
|
||||||
|
if ((flg & RETRO_TASK_FLG_CANCELLED) > 0)
|
||||||
goto task_finished;
|
goto task_finished;
|
||||||
|
|
||||||
switch (pl_manager->status)
|
switch (pl_manager->status)
|
||||||
|
@ -254,9 +257,8 @@ static void task_pl_manager_reset_cores_handler(retro_task_t *task)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
task_finished:
|
task_finished:
|
||||||
|
|
||||||
if (task)
|
if (task)
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool task_pl_manager_reset_cores_finder(
|
static bool task_pl_manager_reset_cores_finder(
|
||||||
|
@ -328,11 +330,12 @@ bool task_push_pl_manager_reset_cores(const playlist_config_t *playlist_config)
|
||||||
task->handler = task_pl_manager_reset_cores_handler;
|
task->handler = task_pl_manager_reset_cores_handler;
|
||||||
task->state = pl_manager;
|
task->state = pl_manager;
|
||||||
task->title = strdup(task_title);
|
task->title = strdup(task_title);
|
||||||
task->alternative_look = true;
|
|
||||||
task->progress = 0;
|
task->progress = 0;
|
||||||
task->callback = cb_task_pl_manager;
|
task->callback = cb_task_pl_manager;
|
||||||
task->cleanup = task_pl_manager_free;
|
task->cleanup = task_pl_manager_free;
|
||||||
|
|
||||||
|
task->flags |= (RETRO_TASK_FLG_ALTERNATIVE_LOOK);
|
||||||
|
|
||||||
task_queue_push(task);
|
task_queue_push(task);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -426,6 +429,7 @@ reset_core:
|
||||||
|
|
||||||
static void task_pl_manager_clean_playlist_handler(retro_task_t *task)
|
static void task_pl_manager_clean_playlist_handler(retro_task_t *task)
|
||||||
{
|
{
|
||||||
|
uint8_t flg;
|
||||||
pl_manager_handle_t *pl_manager = NULL;
|
pl_manager_handle_t *pl_manager = NULL;
|
||||||
|
|
||||||
if (!task)
|
if (!task)
|
||||||
|
@ -436,7 +440,9 @@ static void task_pl_manager_clean_playlist_handler(retro_task_t *task)
|
||||||
if (!pl_manager)
|
if (!pl_manager)
|
||||||
goto task_finished;
|
goto task_finished;
|
||||||
|
|
||||||
if (task_get_cancelled(task))
|
flg = task_get_flags(task);
|
||||||
|
|
||||||
|
if ((flg & RETRO_TASK_FLG_CANCELLED) > 0)
|
||||||
goto task_finished;
|
goto task_finished;
|
||||||
|
|
||||||
switch (pl_manager->status)
|
switch (pl_manager->status)
|
||||||
|
@ -676,9 +682,8 @@ static void task_pl_manager_clean_playlist_handler(retro_task_t *task)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
task_finished:
|
task_finished:
|
||||||
|
|
||||||
if (task)
|
if (task)
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool task_pl_manager_clean_playlist_finder(
|
static bool task_pl_manager_clean_playlist_finder(
|
||||||
|
@ -755,11 +760,12 @@ bool task_push_pl_manager_clean_playlist(
|
||||||
task->handler = task_pl_manager_clean_playlist_handler;
|
task->handler = task_pl_manager_clean_playlist_handler;
|
||||||
task->state = pl_manager;
|
task->state = pl_manager;
|
||||||
task->title = strdup(task_title);
|
task->title = strdup(task_title);
|
||||||
task->alternative_look = true;
|
|
||||||
task->progress = 0;
|
task->progress = 0;
|
||||||
task->callback = cb_task_pl_manager;
|
task->callback = cb_task_pl_manager;
|
||||||
task->cleanup = task_pl_manager_free;
|
task->cleanup = task_pl_manager_free;
|
||||||
|
|
||||||
|
task->flags |= RETRO_TASK_FLG_ALTERNATIVE_LOOK;
|
||||||
|
|
||||||
task_queue_push(task);
|
task_queue_push(task);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -67,7 +67,7 @@ static void task_powerstate_handler(retro_task_t *task)
|
||||||
}
|
}
|
||||||
|
|
||||||
task_set_data(task, powerstate);
|
task_set_data(task, powerstate);
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void task_push_get_powerstate(void)
|
void task_push_get_powerstate(void)
|
||||||
|
@ -77,8 +77,8 @@ void task_push_get_powerstate(void)
|
||||||
|
|
||||||
if (!task)
|
if (!task)
|
||||||
return;
|
return;
|
||||||
state = (powerstate_t*)calloc(1, sizeof(*state));
|
|
||||||
if (!state)
|
if (!(state = (powerstate_t*)calloc(1, sizeof(*state))))
|
||||||
{
|
{
|
||||||
free(task);
|
free(task);
|
||||||
return;
|
return;
|
||||||
|
@ -88,7 +88,7 @@ void task_push_get_powerstate(void)
|
||||||
task->state = state;
|
task->state = state;
|
||||||
task->handler = task_powerstate_handler;
|
task->handler = task_powerstate_handler;
|
||||||
task->callback = task_powerstate_cb;
|
task->callback = task_powerstate_cb;
|
||||||
task->mute = true;
|
task->flags |= RETRO_TASK_FLG_MUTE;
|
||||||
|
|
||||||
task_queue_push(task);
|
task_queue_push(task);
|
||||||
}
|
}
|
||||||
|
|
|
@ -306,14 +306,17 @@ static void undo_save_state_cb(retro_task_t *task,
|
||||||
static void task_save_handler_finished(retro_task_t *task,
|
static void task_save_handler_finished(retro_task_t *task,
|
||||||
save_task_state_t *state)
|
save_task_state_t *state)
|
||||||
{
|
{
|
||||||
|
uint8_t flg;
|
||||||
save_task_state_t *task_data = NULL;
|
save_task_state_t *task_data = NULL;
|
||||||
|
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
|
|
||||||
intfstream_close(state->file);
|
intfstream_close(state->file);
|
||||||
free(state->file);
|
free(state->file);
|
||||||
|
|
||||||
if (!task_get_error(task) && task_get_cancelled(task))
|
flg = task_get_flags(task);
|
||||||
|
|
||||||
|
if (!task_get_error(task) && ((flg & RETRO_TASK_FLG_CANCELLED) > 0))
|
||||||
task_set_error(task, strdup("Task canceled"));
|
task_set_error(task, strdup("Task canceled"));
|
||||||
|
|
||||||
task_data = (save_task_state_t*)calloc(1, sizeof(*task_data));
|
task_data = (save_task_state_t*)calloc(1, sizeof(*task_data));
|
||||||
|
@ -499,6 +502,7 @@ static void *content_get_serialized_data(size_t* serial_size)
|
||||||
**/
|
**/
|
||||||
static void task_save_handler(retro_task_t *task)
|
static void task_save_handler(retro_task_t *task)
|
||||||
{
|
{
|
||||||
|
uint8_t flg;
|
||||||
ssize_t remaining;
|
ssize_t remaining;
|
||||||
int written = 0;
|
int written = 0;
|
||||||
save_task_state_t *state = (save_task_state_t*)task->state;
|
save_task_state_t *state = (save_task_state_t*)task->state;
|
||||||
|
@ -535,7 +539,9 @@ static void task_save_handler(retro_task_t *task)
|
||||||
|
|
||||||
task_set_progress(task, (state->written / (float)state->size) * 100);
|
task_set_progress(task, (state->written / (float)state->size) * 100);
|
||||||
|
|
||||||
if (task_get_cancelled(task) || written != remaining)
|
flg = task_get_flags(task);
|
||||||
|
|
||||||
|
if (((flg & RETRO_TASK_FLG_CANCELLED) > 0) || written != remaining)
|
||||||
{
|
{
|
||||||
char msg[128];
|
char msg[128];
|
||||||
|
|
||||||
|
@ -583,7 +589,7 @@ static void task_save_handler(retro_task_t *task)
|
||||||
msg = strdup(new_msg);
|
msg = strdup(new_msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!task_get_mute(task) && msg)
|
if (!((flg & RETRO_TASK_FLG_MUTE) > 0) && msg)
|
||||||
{
|
{
|
||||||
task_set_title(task, msg);
|
task_set_title(task, msg);
|
||||||
msg = NULL;
|
msg = NULL;
|
||||||
|
@ -636,7 +642,11 @@ static bool task_push_undo_save_state(const char *path, void *data, size_t size)
|
||||||
task->handler = task_save_handler;
|
task->handler = task_save_handler;
|
||||||
task->callback = undo_save_state_cb;
|
task->callback = undo_save_state_cb;
|
||||||
task->title = strdup(msg_hash_to_str(MSG_UNDOING_SAVE_STATE));
|
task->title = strdup(msg_hash_to_str(MSG_UNDOING_SAVE_STATE));
|
||||||
task->mute = (state->flags & SAVE_TASK_FLAG_MUTE) ? true : false;
|
|
||||||
|
if (state->flags & SAVE_TASK_FLAG_MUTE)
|
||||||
|
task->flags |= RETRO_TASK_FLG_MUTE;
|
||||||
|
else
|
||||||
|
task->flags &= ~RETRO_TASK_FLG_MUTE;
|
||||||
|
|
||||||
task_queue_push(task);
|
task_queue_push(task);
|
||||||
|
|
||||||
|
@ -681,9 +691,10 @@ bool content_undo_save_state(void)
|
||||||
static void task_load_handler_finished(retro_task_t *task,
|
static void task_load_handler_finished(retro_task_t *task,
|
||||||
save_task_state_t *state)
|
save_task_state_t *state)
|
||||||
{
|
{
|
||||||
|
uint8_t flg;
|
||||||
load_task_data_t *task_data = NULL;
|
load_task_data_t *task_data = NULL;
|
||||||
|
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
|
|
||||||
if (state->file)
|
if (state->file)
|
||||||
{
|
{
|
||||||
|
@ -691,7 +702,9 @@ static void task_load_handler_finished(retro_task_t *task,
|
||||||
free(state->file);
|
free(state->file);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!task_get_error(task) && task_get_cancelled(task))
|
flg = task_get_flags(task);
|
||||||
|
|
||||||
|
if (!task_get_error(task) && ((flg & RETRO_TASK_FLG_CANCELLED) > 0))
|
||||||
task_set_error(task, strdup("Task canceled"));
|
task_set_error(task, strdup("Task canceled"));
|
||||||
|
|
||||||
if (!(task_data = (load_task_data_t*)calloc(1, sizeof(*task_data))))
|
if (!(task_data = (load_task_data_t*)calloc(1, sizeof(*task_data))))
|
||||||
|
@ -712,6 +725,7 @@ static void task_load_handler_finished(retro_task_t *task,
|
||||||
**/
|
**/
|
||||||
static void task_load_handler(retro_task_t *task)
|
static void task_load_handler(retro_task_t *task)
|
||||||
{
|
{
|
||||||
|
uint8_t flg;
|
||||||
ssize_t remaining, bytes_read;
|
ssize_t remaining, bytes_read;
|
||||||
save_task_state_t *state = (save_task_state_t*)task->state;
|
save_task_state_t *state = (save_task_state_t*)task->state;
|
||||||
|
|
||||||
|
@ -740,7 +754,7 @@ static void task_load_handler(retro_task_t *task)
|
||||||
|
|
||||||
#ifdef HAVE_CHEEVOS
|
#ifdef HAVE_CHEEVOS
|
||||||
if (rcheevos_hardcore_active())
|
if (rcheevos_hardcore_active())
|
||||||
task_set_cancelled(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_CANCELLED, true);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
remaining = MIN(state->size - state->bytes_read, SAVE_STATE_CHUNK);
|
remaining = MIN(state->size - state->bytes_read, SAVE_STATE_CHUNK);
|
||||||
|
@ -751,7 +765,9 @@ static void task_load_handler(retro_task_t *task)
|
||||||
if (state->size > 0)
|
if (state->size > 0)
|
||||||
task_set_progress(task, (state->bytes_read / (float)state->size) * 100);
|
task_set_progress(task, (state->bytes_read / (float)state->size) * 100);
|
||||||
|
|
||||||
if (task_get_cancelled(task) || bytes_read != remaining)
|
flg = task_get_flags(task);
|
||||||
|
|
||||||
|
if (((flg & RETRO_TASK_FLG_CANCELLED) > 0) || bytes_read != remaining)
|
||||||
{
|
{
|
||||||
if (state->flags & SAVE_TASK_FLAG_AUTOLOAD)
|
if (state->flags & SAVE_TASK_FLAG_AUTOLOAD)
|
||||||
{
|
{
|
||||||
|
@ -774,7 +790,7 @@ static void task_load_handler(retro_task_t *task)
|
||||||
{
|
{
|
||||||
task_free_title(task);
|
task_free_title(task);
|
||||||
|
|
||||||
if (!task_get_mute(task))
|
if (!((flg & RETRO_TASK_FLG_MUTE) > 0))
|
||||||
{
|
{
|
||||||
char msg[128];
|
char msg[128];
|
||||||
|
|
||||||
|
@ -1184,7 +1200,11 @@ static void task_push_save_state(const char *path, void *data, size_t size, bool
|
||||||
task->handler = task_save_handler;
|
task->handler = task_save_handler;
|
||||||
task->callback = save_state_cb;
|
task->callback = save_state_cb;
|
||||||
task->title = strdup(msg_hash_to_str(MSG_SAVING_STATE));
|
task->title = strdup(msg_hash_to_str(MSG_SAVING_STATE));
|
||||||
task->mute = (state->flags & SAVE_TASK_FLAG_MUTE) ? true : false;
|
|
||||||
|
if (state->flags & SAVE_TASK_FLAG_MUTE)
|
||||||
|
task->flags |= RETRO_TASK_FLG_MUTE;
|
||||||
|
else
|
||||||
|
task->flags &= ~RETRO_TASK_FLG_MUTE;
|
||||||
|
|
||||||
if (!task_queue_push(task))
|
if (!task_queue_push(task))
|
||||||
{
|
{
|
||||||
|
@ -1290,7 +1310,11 @@ static void task_push_load_and_save_state(const char *path, void *data,
|
||||||
task->handler = task_load_handler;
|
task->handler = task_load_handler;
|
||||||
task->callback = content_load_and_save_state_cb;
|
task->callback = content_load_and_save_state_cb;
|
||||||
task->title = strdup(msg_hash_to_str(MSG_LOADING_STATE));
|
task->title = strdup(msg_hash_to_str(MSG_LOADING_STATE));
|
||||||
task->mute = (state->flags & SAVE_TASK_FLAG_MUTE) ? true : false;
|
|
||||||
|
if (state->flags & SAVE_TASK_FLAG_MUTE)
|
||||||
|
task->flags |= RETRO_TASK_FLG_MUTE;
|
||||||
|
else
|
||||||
|
task->flags &= ~RETRO_TASK_FLG_MUTE;
|
||||||
|
|
||||||
if (!task_queue_push(task))
|
if (!task_queue_push(task))
|
||||||
{
|
{
|
||||||
|
@ -1575,7 +1599,11 @@ bool content_load_state(const char *path,
|
||||||
task->handler = task_load_handler;
|
task->handler = task_load_handler;
|
||||||
task->callback = content_load_state_cb;
|
task->callback = content_load_state_cb;
|
||||||
task->title = strdup(msg_hash_to_str(MSG_LOADING_STATE));
|
task->title = strdup(msg_hash_to_str(MSG_LOADING_STATE));
|
||||||
task->mute = (state->flags & SAVE_TASK_FLAG_MUTE) ? true : false;
|
|
||||||
|
if (state->flags & SAVE_TASK_FLAG_MUTE)
|
||||||
|
task->flags |= RETRO_TASK_FLG_MUTE;
|
||||||
|
else
|
||||||
|
task->flags &= ~RETRO_TASK_FLG_MUTE;
|
||||||
|
|
||||||
task_queue_push(task);
|
task_queue_push(task);
|
||||||
|
|
||||||
|
|
|
@ -117,6 +117,7 @@ static bool screenshot_dump_direct(screenshot_task_state_t *state)
|
||||||
**/
|
**/
|
||||||
static void task_screenshot_handler(retro_task_t *task)
|
static void task_screenshot_handler(retro_task_t *task)
|
||||||
{
|
{
|
||||||
|
uint8_t flg;
|
||||||
screenshot_task_state_t *state = NULL;
|
screenshot_task_state_t *state = NULL;
|
||||||
bool ret = false;
|
bool ret = false;
|
||||||
|
|
||||||
|
@ -125,7 +126,10 @@ static void task_screenshot_handler(retro_task_t *task)
|
||||||
|
|
||||||
if (!(state = (screenshot_task_state_t*)task->state))
|
if (!(state = (screenshot_task_state_t*)task->state))
|
||||||
goto task_finished;
|
goto task_finished;
|
||||||
if (task_get_cancelled(task))
|
|
||||||
|
flg = task_get_flags(task);
|
||||||
|
|
||||||
|
if ((flg & RETRO_TASK_FLG_CANCELLED) > 0)
|
||||||
goto task_finished;
|
goto task_finished;
|
||||||
if (task_get_progress(task) == 100)
|
if (task_get_progress(task) == 100)
|
||||||
goto task_finished;
|
goto task_finished;
|
||||||
|
@ -167,8 +171,8 @@ static void task_screenshot_handler(retro_task_t *task)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
task_finished:
|
task_finished:
|
||||||
|
if (task)
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
|
|
||||||
if (task->title)
|
if (task->title)
|
||||||
task_free_title(task);
|
task_free_title(task);
|
||||||
|
@ -371,12 +375,15 @@ static bool screenshot_dump(
|
||||||
task->type = TASK_TYPE_BLOCKING;
|
task->type = TASK_TYPE_BLOCKING;
|
||||||
task->state = state;
|
task->state = state;
|
||||||
task->handler = task_screenshot_handler;
|
task->handler = task_screenshot_handler;
|
||||||
task->mute = savestate;
|
if (savestate)
|
||||||
|
task->flags |= RETRO_TASK_FLG_MUTE;
|
||||||
|
else
|
||||||
|
task->flags &= ~RETRO_TASK_FLG_MUTE;
|
||||||
#if defined(HAVE_GFX_WIDGETS)
|
#if defined(HAVE_GFX_WIDGETS)
|
||||||
/* This callback is only required when
|
/* This callback is only required when
|
||||||
* widgets are enabled */
|
* widgets are enabled */
|
||||||
if (state->flags & SS_TASK_FLAG_WIDGETS_READY)
|
if (state->flags & SS_TASK_FLAG_WIDGETS_READY)
|
||||||
task->callback = task_screenshot_callback;
|
task->callback = task_screenshot_callback;
|
||||||
|
|
||||||
if ((state->flags & SS_TASK_FLAG_WIDGETS_READY) && !savestate)
|
if ((state->flags & SS_TASK_FLAG_WIDGETS_READY) && !savestate)
|
||||||
task_free_title(task);
|
task_free_title(task);
|
||||||
|
|
|
@ -28,6 +28,7 @@ typedef struct steam_core_dlc_install_state
|
||||||
|
|
||||||
static void task_steam_core_dlc_install_handler(retro_task_t *task)
|
static void task_steam_core_dlc_install_handler(retro_task_t *task)
|
||||||
{
|
{
|
||||||
|
uint8_t flg;
|
||||||
int8_t progress;
|
int8_t progress;
|
||||||
steam_core_dlc_install_state_t *state = NULL;
|
steam_core_dlc_install_state_t *state = NULL;
|
||||||
MistResult result = MistResult_Success;
|
MistResult result = MistResult_Success;
|
||||||
|
@ -41,7 +42,9 @@ static void task_steam_core_dlc_install_handler(retro_task_t *task)
|
||||||
if (!(state = (steam_core_dlc_install_state_t*)task->state))
|
if (!(state = (steam_core_dlc_install_state_t*)task->state))
|
||||||
goto task_finished;
|
goto task_finished;
|
||||||
|
|
||||||
if (task_get_cancelled(task))
|
flg = task_get_flags(task);
|
||||||
|
|
||||||
|
if ((flg & RETRO_TASK_FLG_CANCELLED) > 0)
|
||||||
goto task_finished;
|
goto task_finished;
|
||||||
|
|
||||||
result = mist_steam_apps_get_dlc_download_progress(state->app_id, &downloading, &bytes_downloaded, &bytes_total);
|
result = mist_steam_apps_get_dlc_download_progress(state->app_id, &downloading, &bytes_downloaded, &bytes_total);
|
||||||
|
@ -70,7 +73,7 @@ static void task_steam_core_dlc_install_handler(retro_task_t *task)
|
||||||
return;
|
return;
|
||||||
task_finished:
|
task_finished:
|
||||||
if (task)
|
if (task)
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
|
|
||||||
/* If finished successfully */
|
/* If finished successfully */
|
||||||
if (MIST_IS_SUCCESS(result))
|
if (MIST_IS_SUCCESS(result))
|
||||||
|
|
|
@ -58,8 +58,9 @@ static void task_auto_translate_handler(retro_task_t *task)
|
||||||
#ifdef HAVE_ACCESSIBILITY
|
#ifdef HAVE_ACCESSIBILITY
|
||||||
settings_t *settings = config_get_ptr();
|
settings_t *settings = config_get_ptr();
|
||||||
#endif
|
#endif
|
||||||
|
uint8_t flg = task_get_flags(task);
|
||||||
|
|
||||||
if (task_get_cancelled(task))
|
if ((flg & RETRO_TASK_FLG_CANCELLED) > 0)
|
||||||
goto task_finished;
|
goto task_finished;
|
||||||
|
|
||||||
switch (*mode_ptr)
|
switch (*mode_ptr)
|
||||||
|
@ -87,7 +88,7 @@ task_finished:
|
||||||
if (access_st->ai_service_auto == 1)
|
if (access_st->ai_service_auto == 1)
|
||||||
access_st->ai_service_auto = 2;
|
access_st->ai_service_auto = 2;
|
||||||
|
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
|
|
||||||
if (*mode_ptr == 1 || *mode_ptr == 2)
|
if (*mode_ptr == 1 || *mode_ptr == 2)
|
||||||
{
|
{
|
||||||
|
@ -124,7 +125,7 @@ static void call_auto_translate_task(
|
||||||
|
|
||||||
t->user_data = NULL;
|
t->user_data = NULL;
|
||||||
t->handler = task_auto_translate_handler;
|
t->handler = task_auto_translate_handler;
|
||||||
t->mute = true;
|
t->flags |= RETRO_TASK_FLG_MUTE;
|
||||||
|
|
||||||
if (mode)
|
if (mode)
|
||||||
{
|
{
|
||||||
|
|
|
@ -51,7 +51,7 @@ static void task_wifi_scan_handler(retro_task_t *task)
|
||||||
task_set_progress(task, 100);
|
task_set_progress(task, 100);
|
||||||
task_free_title(task);
|
task_free_title(task);
|
||||||
task_set_title(task, strdup(msg_hash_to_str(MSG_WIFI_SCAN_COMPLETE)));
|
task_set_title(task, strdup(msg_hash_to_str(MSG_WIFI_SCAN_COMPLETE)));
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void task_wifi_enable_handler(retro_task_t *task)
|
static void task_wifi_enable_handler(retro_task_t *task)
|
||||||
|
@ -62,7 +62,7 @@ static void task_wifi_enable_handler(retro_task_t *task)
|
||||||
driver_wifi_enable(true);
|
driver_wifi_enable(true);
|
||||||
|
|
||||||
task_set_progress(task, 100);
|
task_set_progress(task, 100);
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void task_wifi_disable_handler(retro_task_t *task)
|
static void task_wifi_disable_handler(retro_task_t *task)
|
||||||
|
@ -73,7 +73,7 @@ static void task_wifi_disable_handler(retro_task_t *task)
|
||||||
driver_wifi_enable(false);
|
driver_wifi_enable(false);
|
||||||
|
|
||||||
task_set_progress(task, 100);
|
task_set_progress(task, 100);
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void task_wifi_disconnect_handler(retro_task_t *task)
|
static void task_wifi_disconnect_handler(retro_task_t *task)
|
||||||
|
@ -86,7 +86,7 @@ static void task_wifi_disconnect_handler(retro_task_t *task)
|
||||||
driver_wifi_disconnect_ssid(&netinfo);
|
driver_wifi_disconnect_ssid(&netinfo);
|
||||||
|
|
||||||
task_set_progress(task, 100);
|
task_set_progress(task, 100);
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void task_wifi_connect_handler(retro_task_t *task)
|
static void task_wifi_connect_handler(retro_task_t *task)
|
||||||
|
@ -98,7 +98,7 @@ static void task_wifi_connect_handler(retro_task_t *task)
|
||||||
free(task->user_data);
|
free(task->user_data);
|
||||||
|
|
||||||
task_set_progress(task, 100);
|
task_set_progress(task, 100);
|
||||||
task_set_finished(task, true);
|
task_set_flags(task, RETRO_TASK_FLG_FINISHED, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool task_push_wifi_connect(retro_task_callback_t cb, void *netptr)
|
bool task_push_wifi_connect(retro_task_callback_t cb, void *netptr)
|
||||||
|
@ -108,7 +108,7 @@ bool task_push_wifi_connect(retro_task_callback_t cb, void *netptr)
|
||||||
wifi_network_info_t *netinfo = (wifi_network_info_t*)netptr;
|
wifi_network_info_t *netinfo = (wifi_network_info_t*)netptr;
|
||||||
if (!task)
|
if (!task)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
snprintf(msg, sizeof(msg), msg_hash_to_str(MSG_WIFI_CONNECTING_TO), netinfo->ssid);
|
snprintf(msg, sizeof(msg), msg_hash_to_str(MSG_WIFI_CONNECTING_TO), netinfo->ssid);
|
||||||
|
|
||||||
task->type = TASK_TYPE_BLOCKING;
|
task->type = TASK_TYPE_BLOCKING;
|
||||||
|
|
Loading…
Reference in New Issue