test/snake.c

changeset 46
d3285aed65b3
parent 45
18de2af03531
child 47
44457f6cb0a2
     1.1 --- a/test/snake.c	Thu Mar 28 23:30:21 2024 +0100
     1.2 +++ b/test/snake.c	Fri Mar 29 00:03:25 2024 +0100
     1.3 @@ -29,18 +29,17 @@
     1.4  #include <cx/printf.h>
     1.5  
     1.6  static void update_fps_counter(AscSceneNode *node) {
     1.7 -    // addition and multiplication is more efficient testing for zero
     1.8 -    // at an unnoticeable cost of imprecision
     1.9 -    static unsigned last_fps = 0u;
    1.10 -    static unsigned debounce = 999u;
    1.11 -    unsigned fps = 1000u;
    1.12 -    debounce += asc_context.elapsed_millis;
    1.13 -    if (debounce >= 1000u) {
    1.14 +    static uint64_t last_fps = 0;
    1.15 +    static uint64_t debounce = ASC_NANOS_SECOND - 1;
    1.16 +    debounce += asc_context.frame_nanos;
    1.17 +    // only update text every seconds
    1.18 +    if (debounce >= ASC_NANOS_SECOND) {
    1.19          debounce = 0;
    1.20 -        fps /= asc_context.elapsed_millis;
    1.21 +        uint64_t fps = ASC_NANOS_SECOND;
    1.22 +        fps /= asc_context.frame_nanos;
    1.23          if (fps != last_fps) {
    1.24              last_fps = fps;
    1.25 -            snprintf(asc_text_data(node)->text, 9, "%u FPS", fps);
    1.26 +            snprintf(asc_text_data(node)->text, 11, "%"PRIu64" FPS", fps);
    1.27              asc_node_update(node);
    1.28          }
    1.29      }
    1.30 @@ -49,7 +48,7 @@
    1.31  static void create_fps_counter(void) {
    1.32      asc_set_font(asc_font(ASC_FONT_REGULAR, 24));
    1.33      asc_ink_rgb(255, 0, 0);
    1.34 -    AscSceneNode* node = asc_text(10, 10, "XXXXX FPS");
    1.35 +    AscSceneNode* node = asc_text(10, 10, "XXXXXXX FPS");
    1.36      asc_scene_add_behavior(node, update_fps_counter);
    1.37      asc_scene_add(&asc_window_active->ui, node);
    1.38  }

mercurial