Ignore:
Timestamp:
Dec 6, 2009, 10:21:40 PM (10 years ago)
Author:
Sam Hocevar
Message:

Gather profiling information in caca_refresh_display() and caca_get_event().

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcaca/trunk/caca/event.c

    r3619 r4094  
    11/*
    22 *  libcaca       Colour ASCII-Art library
    3  *  Copyright (c) 2002-2006 Sam Hocevar <sam@zoy.org>
     3 *  Copyright (c) 2002-2009 Sam Hocevar <sam@hocevar.net>
    44 *                All Rights Reserved
    55 *
     
    6868    caca_privevent_t privevent;
    6969    caca_timer_t timer = {0, 0};
    70     int usec = 0;
     70#if defined PROF
     71    caca_timer_t proftimer = {0, 0};
     72    int profsys = 0, profwait = 0;
     73#endif
     74    int ret = 0, usec = 0;
     75
     76#if defined PROF
     77    _caca_getticks(&proftimer);
     78#endif
    7179
    7280    if(!event_mask)
    73         return 0;
     81        goto end;
    7482
    7583    if(timeout > 0)
     
    7886    for( ; ; )
    7987    {
    80         int ret = _get_next_event(dp, &privevent);
     88#if defined PROF
     89        profwait += _caca_getticks(&proftimer);
     90#endif
     91        ret = _get_next_event(dp, &privevent);
     92#if defined PROF
     93        profsys += _caca_getticks(&proftimer);
     94#endif
    8195
    8296        /* If we got the event we wanted, return */
     
    8599            if(ev)
    86100                memcpy(ev, &privevent, sizeof(privevent));
    87             return ret;
     101            goto end;
    88102        }
    89103
     
    101115            if(ev)
    102116                memcpy(ev, &privevent, sizeof(privevent));
    103             return 0;
     117            ret = 0;
     118            goto end;
    104119        }
    105120
    106121        /* Otherwise sleep a bit. Our granularity is far too high for values
    107122         * below 10000 microseconds so we cheat a bit. */
    108         if(usec > 10000)
    109             _caca_sleep(10000);
    110         else
    111             _caca_sleep(1000);
     123        _caca_sleep(usec > 10000 ? 10000 : 1000);
    112124
    113125        usec += _caca_getticks(&timer);
    114126    }
     127
     128end:
     129#if defined PROF
     130    profwait += _caca_getticks(&proftimer);
     131    STAT_IADD(&dp->ev_sys_stat, profsys);
     132    STAT_IADD(&dp->ev_wait_stat, profwait);
     133#endif
     134
     135    return ret;
    115136}
    116137
Note: See TracChangeset for help on using the changeset viewer.