GElapsedTimer.cpp 638 B

1234567891011121314151617181920212223242526
  1. #include <LibGUI/GElapsedTimer.h>
  2. #include <sys/time.h>
  3. void GElapsedTimer::start()
  4. {
  5. gettimeofday(&m_start_time, nullptr);
  6. }
  7. inline void timersub(const struct timeval* a, const struct timeval* b, struct timeval* result)
  8. {
  9. result->tv_sec = a->tv_sec - b->tv_sec;
  10. result->tv_usec = a->tv_usec - b->tv_usec;
  11. if (result->tv_usec < 0) {
  12. --result->tv_sec;
  13. result->tv_usec += 1000000;
  14. }
  15. }
  16. int GElapsedTimer::elapsed() const
  17. {
  18. struct timeval now;
  19. gettimeofday(&now, nullptr);
  20. struct timeval diff;
  21. timersub(&now, &m_start_time, &diff);
  22. return diff.tv_sec * 1000 + diff.tv_usec / 1000;
  23. }