diff options
-rw-r--r-- | gui/gui.cpp | 27 | ||||
-rw-r--r-- | twrp-functions.cpp | 6 | ||||
-rw-r--r-- | twrp-functions.hpp | 1 |
3 files changed, 34 insertions, 0 deletions
diff --git a/gui/gui.cpp b/gui/gui.cpp index 2098342b0..912899f07 100644 --- a/gui/gui.cpp +++ b/gui/gui.cpp @@ -57,6 +57,9 @@ extern "C" #include "blanktimer.hpp" #endif +// Enable to print render time of each frame to the log file +//#define PRINT_RENDER_TIME 1 + const static int CURTAIN_FADE = 32; using namespace rapidxml; @@ -484,6 +487,11 @@ static int runPages(void) DataManager::SetValue("tw_loaded", 1); +#ifdef PRINT_RENDER_TIME + timespec start, end; + int32_t render_t, flip_t; +#endif + for (;;) { loopTimer(); @@ -493,11 +501,30 @@ static int runPages(void) int ret; ret = PageManager::Update(); + +#ifndef PRINT_RENDER_TIME if (ret > 1) PageManager::Render(); if (ret > 0) flip(); +#else + if (ret > 1) + { + clock_gettime(CLOCK_MONOTONIC, &start); + PageManager::Render(); + clock_gettime(CLOCK_MONOTONIC, &end); + render_t = TWFunc::timespec_diff_ms(start, end); + + flip(); + clock_gettime(CLOCK_MONOTONIC, &start); + flip_t = TWFunc::timespec_diff_ms(end, start); + + LOGINFO("Render(): %u ms, flip(): %u ms, total: %u ms\n", render_t, flip_t, render_t+flip_t); + } + else if(ret == 1) + flip(); +#endif } else { diff --git a/twrp-functions.cpp b/twrp-functions.cpp index 3f44fd2ce..df7174362 100644 --- a/twrp-functions.cpp +++ b/twrp-functions.cpp @@ -515,6 +515,12 @@ timespec TWFunc::timespec_diff(timespec& start, timespec& end) return temp; } +int32_t TWFunc::timespec_diff_ms(timespec& start, timespec& end) +{ + return ((end.tv_sec * 1000) + end.tv_nsec/1000000) - + ((start.tv_sec * 1000) + start.tv_nsec/1000000); +} + int TWFunc::drop_caches(void) { string file = "/proc/sys/vm/drop_caches"; string value = "3"; diff --git a/twrp-functions.hpp b/twrp-functions.hpp index eb88ae2f3..587d7725e 100644 --- a/twrp-functions.hpp +++ b/twrp-functions.hpp @@ -60,6 +60,7 @@ public: static int copy_file(string src, string dst, int mode); //copy file from src to dst with mode permissions static unsigned int Get_D_Type_From_Stat(string Path); // Returns a dirent dt_type value using stat instead of dirent static timespec timespec_diff(timespec& start, timespec& end); // Return a diff for 2 times + static int32_t timespec_diff_ms(timespec& start, timespec& end); // Returns diff in ms static int read_file(string fn, vector<string>& results); //read from file static int read_file(string fn, string& results); //read from file static int write_file(string fn, string& line); //write from file |