0030901: Visualization - OSD_MemInfo moving memory computation out of the constructor
[occt.git] / src / OSD / OSD_MemInfo.cxx
index d5eda9e..277804e 100644 (file)
 // function : OSD_MemInfo
 // purpose  :
 // =======================================================================
-OSD_MemInfo::OSD_MemInfo()
+OSD_MemInfo::OSD_MemInfo (const Standard_Boolean theImmediateUpdate)
 {
-  Update();
+  if (theImmediateUpdate)
+  {
+    Update();
+  }
+  else
+  {
+    Clear();
+  }
 }
 
+
 // =======================================================================
-// function : Update
+// function : Clear
 // purpose  :
 // =======================================================================
-void OSD_MemInfo::Update()
+void OSD_MemInfo::Clear()
 {
-  // reset values
   for (Standard_Integer anIter = 0; anIter < MemCounter_NB; ++anIter)
   {
     myCounters[anIter] = Standard_Size(-1);
   }
+}
+
+// =======================================================================
+// function : Update
+// purpose  :
+// =======================================================================
+void OSD_MemInfo::Update()
+{
+  Clear();
 #ifndef OCCT_UWP
 #if defined(_WIN32)
 #if (_WIN32_WINNT >= 0x0500)
@@ -238,6 +254,20 @@ Standard_Size OSD_MemInfo::ValueMiB (const OSD_MemInfo::Counter theCounter) cons
 }
 
 // =======================================================================
+// function : ValuePreciseMiB
+// purpose  :
+// =======================================================================
+Standard_Real OSD_MemInfo::ValuePreciseMiB (const OSD_MemInfo::Counter theCounter) const
+{
+  if (theCounter < 0 || theCounter >= MemCounter_NB)
+  {
+    return -1.0;
+  }
+  return (myCounters[theCounter] == Standard_Size(-1))
+       ? -1.0 : ((Standard_Real )myCounters[theCounter] / (1024.0 * 1024.0));
+}
+
+// =======================================================================
 // function : ShowInfo
 // purpose  :
 // =======================================================================