X-Git-Url: https://git.ao2.it/experiments/fps-meter.git/blobdiff_plain/94acc6420c71fa3bbc662abd05976dd19f7da792..e3ce9103ca48d145197fec43770c701aa0f1bdc6:/fps-meter.c?ds=sidebyside
diff --git a/fps-meter.c b/fps-meter.c
index c66cb69..c1a245f 100644
--- a/fps-meter.c
+++ b/fps-meter.c
@@ -17,73 +17,22 @@
* along with this program. If not, see .
*/
-#include
-#include
-
-#ifdef DEBUG
-#define dbg(...) \
- do { \
- printf(__VA_ARGS__); \
- printf("\n"); \
- fflush(stdout); \
- } while(0)
-#else
-#define dbg(...) do {} while(0)
-#endif
-
-#define NSEC_PER_SEC 1000000000
-
-#define timespecsub(a, b, result) \
- do { \
- (result)->tv_sec = (a)->tv_sec - (b)->tv_sec; \
- (result)->tv_nsec = (a)->tv_nsec - (b)->tv_nsec; \
- if ((result)->tv_nsec < 0) { \
- --(result)->tv_sec; \
- (result)->tv_nsec += 1000000000; \
- } \
- } while(0)
+#include "fps-meter.h"
int main(void)
{
- struct timespec time_start;
- struct timespec time_end;
- struct timespec elapsed;
-
+ struct fps_meter_stats stats;
struct timespec tmp;
- unsigned int frames = 0;
- double nsecs = 0;
- float fps;
-
+ fps_meter_init(&stats);
while (1) {
- clock_gettime(CLOCK_MONOTONIC, &time_start);
- dbg("Start time: s: %ld, ns: %ld", time_start.tv_sec, time_start.tv_nsec);
-
/* simulate some workload of about 60fps */
dbg("Doing some work, which takes about %d ns", NSEC_PER_SEC / 60);
tmp.tv_sec = 0;
tmp.tv_nsec = NSEC_PER_SEC / 60;
clock_nanosleep(CLOCK_MONOTONIC, 0, &tmp, NULL);
- clock_gettime(CLOCK_MONOTONIC, &time_end);
- dbg("End time: s: %ld, ns: %ld", time_end.tv_sec, time_end.tv_nsec);
- timespecsub(&time_end, &time_start, &elapsed);
- dbg("Elapsed s: %ld ns: %ld", elapsed.tv_sec, elapsed.tv_nsec);
-
- frames++;
- nsecs += (elapsed.tv_sec * NSEC_PER_SEC + elapsed.tv_nsec);
- if (nsecs >= NSEC_PER_SEC) {
- /*
- * if each frame takes less than a second, then just
- * printing 'frames' is enough, but if we want to
- * cover the case when a frame may take more than
- * a second, some calculations have to be done.
- */
- fps = frames / (nsecs / NSEC_PER_SEC);
- printf("(frames: %d, nsecs: %f) FPS: %.2f\n", frames, nsecs, fps);
- nsecs = 0;
- frames = 0;
- }
+ fps_meter_update(&stats);
}
return 0;