diff --git a/src/cpu.cpp b/src/cpu.cpp index 5115bd0e..725eb200 100644 --- a/src/cpu.cpp +++ b/src/cpu.cpp @@ -97,11 +97,12 @@ void calculateCPUData(CPUData& cpuData, CPUStats::CPUStats() { - m_inited = Init(); } bool CPUStats::Init() { + if (m_inited) + return true; CPUStats::GetCpuFile(); std::string line; std::ifstream file (PROCSTATFILE); @@ -142,8 +143,8 @@ bool CPUStats::Init() } } while(true); - UpdateCPUData(); - return true; + m_inited = true; + return UpdateCPUData(); } //TODO take sampling interval into account? @@ -221,13 +222,14 @@ bool CPUStats::UpdateCoreMhz() { } bool CPUStats::UpdateCpuTemp(){ + m_cpuDataTotal.temp = 0; rewind(cpuTempFile); fflush(cpuTempFile); if (fscanf(cpuTempFile, "%d", &m_cpuDataTotal.temp) != 1) - m_cpuDataTotal.temp = 0; + return false; m_cpuDataTotal.temp /= 1000; - return NULL; + return true; } bool CPUStats::GetCpuFile(){ diff --git a/src/gl/inject.cpp b/src/gl/inject.cpp index aa440ad0..b43a66df 100644 --- a/src/gl/inject.cpp +++ b/src/gl/inject.cpp @@ -13,6 +13,7 @@ #include "imgui_impl_opengl3.h" #include "font_default.h" #include "overlay.h" +#include "cpu.h" #include "mesa/util/macros.h" #include "mesa/util/os_time.h" @@ -55,10 +56,14 @@ void imgui_create(void *ctx) if (inited) return; inited = true; + if (!ctx) return; + + cpuStats.Init(); imgui_init(); gl3wInit(); + std::cerr << "GL version: " << glGetString(GL_VERSION) << std::endl; deviceName = (char*)glGetString(GL_RENDERER); if (deviceName.find("Radeon") != std::string::npos diff --git a/src/overlay.cpp b/src/overlay.cpp index e9326d09..e332af95 100644 --- a/src/overlay.cpp +++ b/src/overlay.cpp @@ -2611,6 +2611,8 @@ static VkResult overlay_CreateInstance( if (instance_data->params.fps_limit > 0) fps_limit_stats.targetFrameTime = int64_t(1000000000.0 / instance_data->params.fps_limit); + cpuStats.Init(); + // Adjust height for DXVK/VKD3D version number if (engineName == "DXVK" || engineName == "VKD3D"){ if (instance_data->params.font_size){