---
 clients/gears.c | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/clients/gears.c b/clients/gears.c
index 70ec86c..8e7d4df 100644
--- a/clients/gears.c
+++ b/clients/gears.c
@@ -59,6 +59,8 @@ struct gears {
 
        GLint gear_list[3];
        int fullscreen;
+       int frames;
+       struct timespec last_fps;
 };
 
 struct gear_template {
@@ -203,10 +205,37 @@ make_gear(const struct gear_template *t)
 }
 
 static void
+update_fps(struct gears *gears)
+{
+       struct timespec now;
+       long diff_ms;
+
+       gears->frames++;
+
+       clock_gettime(CLOCK_MONOTONIC, &now);
+
+       diff_ms = (now.tv_sec - gears->last_fps.tv_sec) * 1000 +
+                 (now.tv_nsec - gears->last_fps.tv_nsec) / 1000000;
+
+       if (diff_ms > 5000) {
+               float seconds = diff_ms / 1000.0;
+               float fps = gears->frames / seconds;
+
+               printf("%d frames in %6.3f seconds = %6.3f FPS\n", 
gears->frames, seconds, fps);
+               fflush(stdout);
+
+               gears->frames = 0;
+               gears->last_fps = now;
+       }
+}
+
+static void
 frame_callback(void *data, struct wl_callback *callback, uint32_t time)
 {
        struct gears *gears = data;
 
+       update_fps(gears);
+
        gears->angle = (GLfloat) (time % 8192) * 360 / 8192.0;
 
        window_schedule_redraw(gears->window);
@@ -407,6 +436,8 @@ gears_create(struct display *display)
        gears->view.rotx = 20.0;
        gears->view.roty = 30.0;
 
+       clock_gettime(CLOCK_MONOTONIC, &gears->last_fps);
+
        glEnable(GL_NORMALIZE);
 
        glMatrixMode(GL_PROJECTION);
-- 
1.7.11.3

This message and any attachments herein are confidential, intended solely for 
the addressees and are SoftAtHome's ownership. Any unauthorized use or 
dissemination is prohibited. If you are not the intended addressee of this 
message, please cancel it immediately and inform the sender.
_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to