mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-01 14:58:14 +00:00
Show timestamps when loading rewind states
This commit is contained in:
1 parent
8dad5a5c57
commit
c20d20ccba
5 files changed
+116
-18
No files matched your search
+23
-10
@@ -34,10 +34,12 @@ CChunkFileReader::Error StateRingbuffer::Save() {
|
||||
} else
|
||||
err = SaveToRam(buffer_);
|
||||
|
||||
if (err == CChunkFileReader::ERROR_NONE)
|
||||
ScheduleCompress(&states_[n], compressBuffer, &bases_[base_]);
|
||||
else
|
||||
if (err == CChunkFileReader::ERROR_NONE) {
|
||||
ScheduleCompress(&states_[n].stateBuffer, compressBuffer, &bases_[base_]);
|
||||
states_[n].savedTime = time_now_d();
|
||||
} else {
|
||||
states_[n].clear();
|
||||
}
|
||||
|
||||
baseMapping_[n] = base_;
|
||||
return err;
|
||||
@@ -57,9 +59,19 @@ CChunkFileReader::Error StateRingbuffer::Restore(std::string *errorString, std::
|
||||
auto pa = GetI18NCategory(I18NCat::PAUSE);
|
||||
|
||||
static std::vector<u8> buffer;
|
||||
LockedDecompress(buffer, states_[n], bases_[baseMapping_[n]]);
|
||||
LockedDecompress(buffer, states_[n].stateBuffer, bases_[baseMapping_[n]]);
|
||||
CChunkFileReader::Error error = LoadFromRam(buffer, errorString);
|
||||
*metadata = pa->T("Rewind");
|
||||
|
||||
if (states_[n].savedTime) {
|
||||
metadata->append(" (");
|
||||
char buffer[26];
|
||||
double unixTime = time_to_unix_utc(states_[n].savedTime);
|
||||
FormatUnixTime(unixTime, buffer, sizeof(buffer), false);
|
||||
metadata->append(buffer);
|
||||
metadata->append(")");
|
||||
}
|
||||
|
||||
rewindLastTime_ = time_now_d();
|
||||
return error;
|
||||
}
|
||||
@@ -103,16 +115,13 @@ void StateRingbuffer::LockedDecompress(std::vector<u8> &result, const std::vecto
|
||||
result.clear();
|
||||
result.reserve(base.size());
|
||||
auto basePos = base.begin();
|
||||
for (size_t i = 0; i < compressed.size(); )
|
||||
{
|
||||
if (compressed[i] == 0)
|
||||
{
|
||||
for (size_t i = 0; i < compressed.size(); ) {
|
||||
if (compressed[i] == 0) {
|
||||
++i;
|
||||
int blockSize = std::min(BLOCK_SIZE, (int)(base.size() - result.size()));
|
||||
result.insert(result.end(), basePos, basePos + blockSize);
|
||||
basePos += blockSize;
|
||||
} else
|
||||
{
|
||||
} else {
|
||||
++i;
|
||||
int blockSize = std::min(BLOCK_SIZE, (int)(compressed.size() - i));
|
||||
result.insert(result.end(), compressed.begin() + i, compressed.begin() + i + blockSize);
|
||||
@@ -171,4 +180,8 @@ void StateRingbuffer::NotifyState() {
|
||||
rewindLastTime_ = time_now_d();
|
||||
}
|
||||
|
||||
double StateRingbuffer::NextStateTimestamp() const {
|
||||
return rewindLastTime_ + g_Config.iRewindSnapshotInterval;
|
||||
}
|
||||
|
||||
} // namespace SaveState
|
||||
Reference in new issue
Block a user