|
|
|
@ -1543,7 +1543,8 @@ bool Achievements::DoState(StateWrapper& sw)
|
|
|
|
return !sw.HasError();
|
|
|
|
return !sw.HasError();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
s_state_buffer.resize(data_size);
|
|
|
|
if (data_size > s_state_buffer.size())
|
|
|
|
|
|
|
|
s_state_buffer.resize(data_size);
|
|
|
|
if (data_size > 0)
|
|
|
|
if (data_size > 0)
|
|
|
|
sw.DoBytes(s_state_buffer.data(), data_size);
|
|
|
|
sw.DoBytes(s_state_buffer.data(), data_size);
|
|
|
|
if (sw.HasError())
|
|
|
|
if (sw.HasError())
|
|
|
|
@ -1569,7 +1570,7 @@ bool Achievements::DoState(StateWrapper& sw)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
|
{
|
|
|
|
{
|
|
|
|
u32 data_size;
|
|
|
|
size_t data_size;
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef ENABLE_RAINTEGRATION
|
|
|
|
#ifdef ENABLE_RAINTEGRATION
|
|
|
|
if (IsUsingRAIntegration())
|
|
|
|
if (IsUsingRAIntegration())
|
|
|
|
@ -1592,23 +1593,19 @@ bool Achievements::DoState(StateWrapper& sw)
|
|
|
|
else
|
|
|
|
else
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
{
|
|
|
|
{
|
|
|
|
int result = RC_INSUFFICIENT_BUFFER;
|
|
|
|
data_size = rc_client_progress_size(s_client);
|
|
|
|
if (!s_state_buffer.empty())
|
|
|
|
if (data_size > 0)
|
|
|
|
result = rc_client_serialize_progress_sized(s_client, s_state_buffer.data(), s_state_buffer.size());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (result == RC_INSUFFICIENT_BUFFER)
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
const size_t size = rc_client_progress_size(s_client);
|
|
|
|
if (s_state_buffer.size() < data_size)
|
|
|
|
s_state_buffer.resize(size);
|
|
|
|
s_state_buffer.resize(data_size);
|
|
|
|
result = rc_client_serialize_progress_sized(s_client, s_state_buffer.data(), s_state_buffer.size());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
data_size = static_cast<u32>(s_state_buffer.size());
|
|
|
|
const int result = rc_client_serialize_progress_sized(s_client, s_state_buffer.data(), data_size);
|
|
|
|
if (result != RC_OK)
|
|
|
|
if (result != RC_OK)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
// set data to zero, effectively serializing nothing
|
|
|
|
// set data to zero, effectively serializing nothing
|
|
|
|
WARNING_LOG("Failed to serialize cheevos state ({})", result);
|
|
|
|
WARNING_LOG("Failed to serialize cheevos state ({})", result);
|
|
|
|
data_size = 0;
|
|
|
|
data_size = 0;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|