Tooltips: Unify the tooltip[] and list[] description tooltip display functions (...
[oweals/minetest.git] / src / profiler.cpp
index 197e094f65a5a0d7bb024d2539c021db6ae820dd..8e997442c9391392dfa08730deac3ffca6176f50 100644 (file)
@@ -21,3 +21,33 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 
 static Profiler main_profiler;
 Profiler *g_profiler = &main_profiler;
+ScopeProfiler::ScopeProfiler(
+               Profiler *profiler, const std::string &name, ScopeProfilerType type)
+    : m_profiler(profiler), m_name(name), m_timer(NULL), m_type(type)
+{
+       if (m_profiler)
+               m_timer = new TimeTaker(m_name);
+}
+
+ScopeProfiler::~ScopeProfiler()
+{
+       if (!m_timer)
+               return;
+
+       float duration_ms = m_timer->stop(true);
+       float duration = duration_ms / 1000.0;
+       if (m_profiler) {
+               switch (m_type) {
+               case SPT_ADD:
+                       m_profiler->add(m_name, duration);
+                       break;
+               case SPT_AVG:
+                       m_profiler->avg(m_name, duration);
+                       break;
+               case SPT_GRAPH_ADD:
+                       m_profiler->graphAdd(m_name, duration);
+                       break;
+               }
+       }
+       delete m_timer;
+}