From 37199eaefa9f314211c70cc59af0f338a8579f3f Mon Sep 17 00:00:00 2001 From: Yimura <24669514+Yimura@users.noreply.github.com> Date: Fri, 10 Feb 2023 22:36:32 +0100 Subject: [PATCH] fix(GTA Data Service): Dead lock (#971) --- src/services/gta_data/gta_data_service.cpp | 10 ++++++++-- src/services/gta_data/gta_data_service.hpp | 1 + src/views/view_gta_data.cpp | 6 ++++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/services/gta_data/gta_data_service.cpp b/src/services/gta_data/gta_data_service.cpp index 471a69c2..00b9d540 100644 --- a/src/services/gta_data/gta_data_service.cpp +++ b/src/services/gta_data/gta_data_service.cpp @@ -51,10 +51,15 @@ namespace big 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] { + 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); while (!*g_pointers->m_is_session_started) @@ -68,6 +73,7 @@ namespace big void gta_data_service::update_now() { + m_update_state = eGtaDataUpdateState::WAITING_FOR_SINGLE_PLAYER; g_fiber_pool->queue_job([this] { rebuild_cache(); diff --git a/src/services/gta_data/gta_data_service.hpp b/src/services/gta_data/gta_data_service.hpp index 116ee959..56221477 100644 --- a/src/services/gta_data/gta_data_service.hpp +++ b/src/services/gta_data/gta_data_service.hpp @@ -10,6 +10,7 @@ namespace big { IDLE, NEEDS_UPDATE, + WAITING_FOR_SINGLE_PLAYER, WAITING_FOR_ONLINE, UPDATING }; diff --git a/src/views/view_gta_data.cpp b/src/views/view_gta_data.cpp index b0dcc136..4faacee6 100644 --- a/src/views/view_gta_data.cpp +++ b/src/views/view_gta_data.cpp @@ -50,6 +50,12 @@ namespace big break; } + case eGtaDataUpdateState::WAITING_FOR_SINGLE_PLAYER: + { + ImGui::Text("GAME_CACHE_WAITING_FOR_SINGLE_PLAYER"_T.data()); + + break; + } case eGtaDataUpdateState::WAITING_FOR_ONLINE: { ImGui::Text("GAME_CACHE_WAITING_FOR_ONLINE"_T.data());