/**
 * @brief timer_get_timeout Return current timeout value
 *
 * @param h timer module handle
 *
 * @return current timeout value otherwise (in milliseconds)
 */
int timer_get_timeout(timer_handle_t *h)
{
    int min = TIMER_INFINITE;
    mmgr_timer_t *t = (mmgr_timer_t *)h;

    ASSERT(t != NULL);

    if (t->type != 0x0) {
        int i = 0;
        struct timespec cur;
        clock_gettime(CLOCK_BOOTTIME, &cur);

        for (i = 0; i < E_TIMER_NUM; i++) {
            if (t->type & (0x1 << i)) {
                long diff = timer_get_elapsed(cur, t->end[i]);
                if (diff < 0)
                    diff = 0;

                if (min == TIMER_INFINITE)
                    min = diff;
                else if (min > diff)
                    min = diff;
            }
        }
    }

    LOG_DEBUG("timeout: %d ms", min);
    return min;
}
/**
 * Checks if timer has elapsed for a specific timer
 */
static inline bool timer_is_elapsed(mmgr_timer_t *t, e_timer_type_t type,
                                    struct timespec *cur)
{
    return (t->type & (0x1 << type)) &&
           (timer_get_elapsed(*cur, t->end[type]) <= 0);
}
Example #3
0
double rth_ui_get_render_time(rthdata* rth)
{
    timer_stop(&rth->data->timing_info);
    return timer_get_elapsed(&rth->data->timing_info) / (double)1e6;
}