Fix profiler values not being updated (F6) and not being logged
authorCraig Robbins <kde.psych@gmail.com>
Tue, 11 Nov 2014 10:58:57 +0000 (20:58 +1000)
committerCraig Robbins <kde.psych@gmail.com>
Tue, 11 Nov 2014 10:58:57 +0000 (20:58 +1000)
src/game.cpp

index 1396e9439d20a50b9d6a236c35e2e8ae9413341a..928c5b38363c83a2e91d577a7b885a239ebe9549 100644 (file)
@@ -1438,6 +1438,8 @@ protected:
        bool checkConnection();
        bool handleCallbacks();
        void processQueues();
+       void updateProfilers(const GameRunData &run_data, const RunStats &stats,
+                       const FpsControl &draw_times, f32 dtime);
        void addProfilerGraphs(const RunStats &stats, const FpsControl &draw_times,
                        f32 dtime);
        void updateStats(RunStats *stats, const FpsControl &draw_times, f32 dtime);
@@ -1574,6 +1576,8 @@ private:
        std::wstring statustext;
 
        KeyCache keycache;
+
+       IntervalLimiter profiler_interval;
 };
 
 Game::Game() :
@@ -1722,7 +1726,8 @@ void Game::run()
 
                infotext = L"";
                hud->resizeHotbar();
-               addProfilerGraphs(stats, draw_times, dtime);
+
+               updateProfilers(runData, stats, draw_times, dtime);
                processUserInput(&flags, &runData, dtime);
                // Update camera before player movement to avoid camera lag of one frame
                updateCameraDirection(&cam_view, &flags);
@@ -2319,6 +2324,34 @@ void Game::processQueues()
 }
 
 
+void Game::updateProfilers(const GameRunData &run_data, const RunStats &stats,
+               const FpsControl &draw_times, f32 dtime)
+{
+       float profiler_print_interval =
+                       g_settings->getFloat("profiler_print_interval");
+       bool print_to_log = true;
+
+       if (profiler_print_interval == 0) {
+               print_to_log = false;
+               profiler_print_interval = 5;
+       }
+
+       if (profiler_interval.step(dtime, profiler_print_interval)) {
+               if (print_to_log) {
+                       infostream << "Profiler:" << std::endl;
+                       g_profiler->print(infostream);
+               }
+
+               update_profiler_gui(guitext_profiler, font, text_height,
+                               run_data.profiler_current_page, run_data.profiler_max_page);
+
+               g_profiler->clear();
+       }
+
+       addProfilerGraphs(stats, draw_times, dtime);
+}
+
+
 void Game::addProfilerGraphs(const RunStats &stats,
                const FpsControl &draw_times, f32 dtime)
 {