diff --git a/client/TracyProfiler.cpp b/client/TracyProfiler.cpp index 65bea4a9..8b407611 100644 --- a/client/TracyProfiler.cpp +++ b/client/TracyProfiler.cpp @@ -1869,16 +1869,20 @@ void Profiler::ProcessSysTime() auto t = std::chrono::high_resolution_clock::now().time_since_epoch().count(); if( t - m_sysTimeLast > 100000000 ) // 100 ms { - m_sysTimeLast = t; + auto sysTime = m_sysTime.Get(); + if( sysTime >= 0 ) + { + m_sysTimeLast = t; - Magic magic; - auto token = GetToken(); - auto& tail = token->get_tail_index(); - auto item = token->enqueue_begin( magic ); - MemWrite( &item->hdr.type, QueueType::SysTimeReport ); - MemWrite( &item->sysTime.time, GetTime() ); - MemWrite( &item->sysTime.sysTime, m_sysTime.Get() ); - tail.store( magic + 1, std::memory_order_release ); + Magic magic; + auto token = GetToken(); + auto& tail = token->get_tail_index(); + auto item = token->enqueue_begin( magic ); + MemWrite( &item->hdr.type, QueueType::SysTimeReport ); + MemWrite( &item->sysTime.time, GetTime() ); + MemWrite( &item->sysTime.sysTime, sysTime ); + tail.store( magic + 1, std::memory_order_release ); + } } } #endif diff --git a/client/TracySysTime.cpp b/client/TracySysTime.cpp index c679dd80..64ed4056 100644 --- a/client/TracySysTime.cpp +++ b/client/TracySysTime.cpp @@ -78,10 +78,10 @@ float SysTime::Get() const auto diffUsed = used - oldUsed; #if defined _WIN32 || defined __CYGWIN__ - return diffUsed == 0 ? 0 : ( diffUsed - diffIdle ) * 100.f / diffUsed; + return diffUsed == 0 ? -1 : ( diffUsed - diffIdle ) * 100.f / diffUsed; #elif defined __linux__ || defined __APPLE__ const auto total = diffUsed + diffIdle; - return total == 0 ? 0 : diffUsed * 100.f / total; + return total == 0 ? -1 : diffUsed * 100.f / total; #endif }