diff --git a/README.md b/README.md index 51c7903..3a06929 100644 --- a/README.md +++ b/README.md @@ -136,10 +136,11 @@ double mfb_timer_get_frequency(); double mfb_timer_get_resolution(); ``` -Furthermore you can set a target fps for the application. The default is 60 frames per second. +Furthermore you can set (and get) a target fps for the application. The default is 60 frames per second. ```c void mfb_set_target_fps(uint32_t fps); +unsigned mfb_get_target_fps(); ``` This avoid the problem of update too fast the window collapsing the redrawing in fast processors. diff --git a/include/MiniFB.h b/include/MiniFB.h index b87338f..c5c6120 100644 --- a/include/MiniFB.h +++ b/include/MiniFB.h @@ -68,6 +68,7 @@ const uint8_t * mfb_get_key_buffer(struct mfb_window *window); // O // FPS void mfb_set_target_fps(uint32_t fps); +unsigned mfb_get_target_fps(); bool mfb_wait_sync(struct mfb_window *window); // Timer diff --git a/src/MiniFB_timer.c b/src/MiniFB_timer.c index f032b28..92ccd78 100644 --- a/src/MiniFB_timer.c +++ b/src/MiniFB_timer.c @@ -22,6 +22,17 @@ mfb_set_target_fps(uint32_t fps) { } } +//------------------------------------- +unsigned +mfb_get_target_fps() { + if (g_time_for_frame == 0) { + return 0; + } + else { + return 1.0 / g_time_for_frame; + } +} + //------------------------------------- struct mfb_timer * mfb_timer_create() { @@ -50,7 +61,7 @@ mfb_timer_destroy(struct mfb_timer *tmr) { //------------------------------------- void mfb_timer_reset(struct mfb_timer *tmr) { - if(tmr == 0x0) + if(tmr == 0x0) return; tmr->start_time = mfb_timer_tick(); @@ -63,7 +74,7 @@ double mfb_timer_now(struct mfb_timer *tmr) { uint64_t counter; - if(tmr == 0x0) + if(tmr == 0x0) return 0.0; counter = mfb_timer_tick(); @@ -79,7 +90,7 @@ mfb_timer_delta(struct mfb_timer *tmr) { int64_t counter; uint64_t delta; - if(tmr == 0x0) + if(tmr == 0x0) return 0.0; counter = mfb_timer_tick();