--- clients/gears.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+)
diff --git a/clients/gears.c b/clients/gears.c index 70ec86c..19165e7 100644 --- a/clients/gears.c +++ b/clients/gears.c @@ -59,6 +59,8 @@ struct gears { GLint gear_list[3]; int fullscreen; + int frames; + uint32_t last_fps; }; struct gear_template { @@ -203,10 +205,33 @@ make_gear(const struct gear_template *t) } static void +update_fps(struct gears *gears, uint32_t time) +{ + long diff_ms; + + gears->frames++; + + diff_ms = time - gears->last_fps; + + 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 = time; + } +} + +static void frame_callback(void *data, struct wl_callback *callback, uint32_t time) { struct gears *gears = data; + update_fps(gears, time); + gears->angle = (GLfloat) (time % 8192) * 360 / 8192.0; window_schedule_redraw(gears->window); @@ -368,6 +393,7 @@ gears_create(struct display *display) { const int width = 450, height = 500; struct gears *gears; + struct timeval tv; int i; gears = malloc(sizeof *gears); @@ -407,6 +433,9 @@ gears_create(struct display *display) gears->view.rotx = 20.0; gears->view.roty = 30.0; + gettimeofday(&tv, NULL); + gears->last_fps = tv.tv_sec * 1000 + tv.tv_usec / 1000; + 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