1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-04-10 15:45:37 +00:00

Use system_clock for time in logs

high_resolution_clock may not give real time. MSVC implements it as
steady_clock that is basically CPU time which is usually desynchronized with
real time.
This commit is contained in:
elsid 2022-04-21 22:45:26 +02:00
parent 1363292fc9
commit e777e35414
No known key found for this signature in database
GPG Key ID: B845CB9FEE18AB40
2 changed files with 5 additions and 4 deletions

View File

@ -112,6 +112,7 @@
Bug #6670: Dialogue order is incorrect Bug #6670: Dialogue order is incorrect
Bug #6680: object.cpp handles nodetree unsafely, memory access with dangling pointer Bug #6680: object.cpp handles nodetree unsafely, memory access with dangling pointer
Bug #6682: HitOnMe doesn't fire as intended Bug #6682: HitOnMe doesn't fire as intended
Bug #6711: Log time differs from real time
Feature #890: OpenMW-CS: Column filtering Feature #890: OpenMW-CS: Column filtering
Feature #1465: "Reset" argument for AI functions Feature #1465: "Reset" argument for AI functions
Feature #2491: Ability to make OpenMW "portable" Feature #2491: Ability to make OpenMW "portable"

View File

@ -78,11 +78,11 @@ namespace Debug
int prefixSize; int prefixSize;
{ {
prefix[0] = '['; prefix[0] = '[';
uint64_t ms = std::chrono::duration_cast<std::chrono::milliseconds>( const auto now = std::chrono::system_clock::now();
std::chrono::high_resolution_clock::now().time_since_epoch()).count(); const auto time = std::chrono::system_clock::to_time_t(now);
std::time_t t = ms / 1000; prefixSize = std::strftime(prefix + 1, sizeof(prefix) - 1, "%T", std::localtime(&time)) + 1;
prefixSize = std::strftime(prefix + 1, sizeof(prefix) - 1, "%T", std::localtime(&t)) + 1;
char levelLetter = " EWIVD*"[int(level)]; char levelLetter = " EWIVD*"[int(level)];
const auto ms = std::chrono::duration_cast<std::chrono::milliseconds>(now.time_since_epoch()).count();
prefixSize += snprintf(prefix + prefixSize, sizeof(prefix) - prefixSize, prefixSize += snprintf(prefix + prefixSize, sizeof(prefix) - prefixSize,
".%03u %c] ", static_cast<unsigned>(ms % 1000), levelLetter); ".%03u %c] ", static_cast<unsigned>(ms % 1000), levelLetter);
} }