diff options
author | Vito Caputo <vcaputo@gnugeneration.com> | 2016-11-23 19:17:46 -0800 |
---|---|---|
committer | Vito Caputo <vcaputo@gnugeneration.com> | 2016-11-23 19:18:20 -0800 |
commit | e3d3c06aa5b47648c0ed145279d7950df42ad80d (patch) | |
tree | 32753b863e6df291e62885f5dbe6add9f76ed916 | |
parent | 46a41227ab8f10ecbcb3d960703986692b64b62d (diff) |
fps: add rudimentary FPS counter
This is just the implementation, nothing leveraged yet.
-rw-r--r-- | fps.c | 46 | ||||
-rw-r--r-- | fps.h | 9 |
2 files changed, 55 insertions, 0 deletions
@@ -0,0 +1,46 @@ +#include <signal.h> +#include <stdio.h> +#include <sys/time.h> + +#include "fb.h" +#include "util.h" + + +static int print_fps; + + +static void sigalrm_handler(int signum) +{ + print_fps = 1; +} + + +int fps_setup(void) +{ + struct itimerval interval = { + .it_interval = { .tv_sec = 1, .tv_usec = 0 }, + .it_value = { .tv_sec = 1, .tv_usec = 0 }, + }; + + if (signal(SIGALRM, sigalrm_handler) == SIG_ERR) + return 0; + + if (setitimer(ITIMER_REAL, &interval, NULL) < 0) + return 0; + + return 1; +} + + +void fps_print(fb_t *fb) +{ + unsigned n; + + if (!print_fps) + return; + + fb_get_put_pages_count(fb, &n); + printf("FPS: %u\n", n); + + print_fps = 0; +} @@ -0,0 +1,9 @@ +#ifndef _FPS_H +#define _FPS_H + +#include "fb.h" + +int fps_setup(void); +void fps_print(fb_t *fb); + +#endif |