fix(GTA Data Service): Dead lock (#971)

This commit is contained in:
Yimura 2023-02-10 22:36:32 +01:00 committed by GitHub
parent da0d98ef0e
commit 37199eaefa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 15 additions and 2 deletions

View File

@ -51,10 +51,15 @@ namespace big
void gta_data_service::update_in_online() void gta_data_service::update_in_online()
{ {
m_update_state = eGtaDataUpdateState::WAITING_FOR_ONLINE; m_update_state = eGtaDataUpdateState::WAITING_FOR_SINGLE_PLAYER;
g_fiber_pool->queue_job([this] g_fiber_pool->queue_job([this]
{ {
while (*g_pointers->m_game_state != eGameState::Playing)
{
script::get_current()->yield(100ms);
}
m_update_state = eGtaDataUpdateState::WAITING_FOR_ONLINE;
session::join_type(eSessionType::SOLO); session::join_type(eSessionType::SOLO);
while (!*g_pointers->m_is_session_started) while (!*g_pointers->m_is_session_started)
@ -68,6 +73,7 @@ namespace big
void gta_data_service::update_now() void gta_data_service::update_now()
{ {
m_update_state = eGtaDataUpdateState::WAITING_FOR_SINGLE_PLAYER;
g_fiber_pool->queue_job([this] g_fiber_pool->queue_job([this]
{ {
rebuild_cache(); rebuild_cache();

View File

@ -10,6 +10,7 @@ namespace big
{ {
IDLE, IDLE,
NEEDS_UPDATE, NEEDS_UPDATE,
WAITING_FOR_SINGLE_PLAYER,
WAITING_FOR_ONLINE, WAITING_FOR_ONLINE,
UPDATING UPDATING
}; };

View File

@ -50,6 +50,12 @@ namespace big
break; break;
} }
case eGtaDataUpdateState::WAITING_FOR_SINGLE_PLAYER:
{
ImGui::Text("GAME_CACHE_WAITING_FOR_SINGLE_PLAYER"_T.data());
break;
}
case eGtaDataUpdateState::WAITING_FOR_ONLINE: case eGtaDataUpdateState::WAITING_FOR_ONLINE:
{ {
ImGui::Text("GAME_CACHE_WAITING_FOR_ONLINE"_T.data()); ImGui::Text("GAME_CACHE_WAITING_FOR_ONLINE"_T.data());