Updated AchievementManager ResolveHash to properly lock inputs and outputs without locking during the network call.
This commit is contained in:
parent
a29ec7d956
commit
7153284e9f
|
@ -518,8 +518,12 @@ AchievementManager::ResponseType
|
||||||
AchievementManager::ResolveHash(std::array<char, HASH_LENGTH> game_hash)
|
AchievementManager::ResolveHash(std::array<char, HASH_LENGTH> game_hash)
|
||||||
{
|
{
|
||||||
rc_api_resolve_hash_response_t hash_data{};
|
rc_api_resolve_hash_response_t hash_data{};
|
||||||
std::string username = Config::Get(Config::RA_USERNAME);
|
std::string username, api_token;
|
||||||
std::string api_token = Config::Get(Config::RA_API_TOKEN);
|
{
|
||||||
|
std::lock_guard lg{m_lock};
|
||||||
|
username = Config::Get(Config::RA_USERNAME);
|
||||||
|
api_token = Config::Get(Config::RA_API_TOKEN);
|
||||||
|
}
|
||||||
rc_api_resolve_hash_request_t resolve_hash_request = {
|
rc_api_resolve_hash_request_t resolve_hash_request = {
|
||||||
.username = username.c_str(), .api_token = api_token.c_str(), .game_hash = game_hash.data()};
|
.username = username.c_str(), .api_token = api_token.c_str(), .game_hash = game_hash.data()};
|
||||||
ResponseType r_type = Request<rc_api_resolve_hash_request_t, rc_api_resolve_hash_response_t>(
|
ResponseType r_type = Request<rc_api_resolve_hash_request_t, rc_api_resolve_hash_response_t>(
|
||||||
|
@ -527,6 +531,7 @@ AchievementManager::ResolveHash(std::array<char, HASH_LENGTH> game_hash)
|
||||||
rc_api_process_resolve_hash_response);
|
rc_api_process_resolve_hash_response);
|
||||||
if (r_type == ResponseType::SUCCESS)
|
if (r_type == ResponseType::SUCCESS)
|
||||||
{
|
{
|
||||||
|
std::lock_guard lg{m_lock};
|
||||||
m_game_id = hash_data.game_id;
|
m_game_id = hash_data.game_id;
|
||||||
INFO_LOG_FMT(ACHIEVEMENTS, "Hashed game ID {} for RetroAchievements.", m_game_id);
|
INFO_LOG_FMT(ACHIEVEMENTS, "Hashed game ID {} for RetroAchievements.", m_game_id);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue