ensure placard is initialized on main thread

This commit is contained in:
Jamiras 2021-11-17 08:18:45 -07:00
parent b0c859557e
commit 11d38421df
2 changed files with 15 additions and 2 deletions

View File

@ -1357,14 +1357,23 @@ static void rcheevos_start_session_async(retro_task_t* task)
}
#endif
rcheevos_show_game_placard();
task_set_finished(task, true);
if (rcheevos_end_load_state() == 0)
rcheevos_fetch_badges();
}
static void rcheevos_start_session_finish(retro_task_t* task, void* data, void* userdata, const char* error)
{
(void)task;
(void)data;
(void)userdata;
(void)error;
/* this must be called on the main thread */
rcheevos_show_game_placard();
}
static void rcheevos_start_session(void)
{
retro_task_t* task;
@ -1391,6 +1400,7 @@ static void rcheevos_start_session(void)
/* this is called on the primary thread. use a task to do the initialization on a background thread */
task = task_init();
task->handler = rcheevos_start_session_async;
task->callback = rcheevos_start_session_finish;
task_queue_push(task);
}

View File

@ -657,6 +657,9 @@ uintptr_t rcheevos_get_badge_texture(const char *badge, bool locked)
if (!badge)
return 0;
/* OpenGL driver crashes if gfx_display_reset_textures_list is called on a background thread */
retro_assert(task_is_on_main_thread());
snprintf(badge_file, sizeof(badge_file), "%s%s%s", badge,
locked ? "_lock" : "", FILE_PATH_PNG_EXTENSION);