11176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/* 21176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * Copyright © 2007 Red Hat, Inc. 31176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * 41176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * Permission to use, copy, modify, distribute, and sell this software and its 51176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * documentation for any purpose is hereby granted without fee, provided that 61176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * the above copyright notice appear in all copies and that both that 71176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * copyright notice and this permission notice appear in supporting 81176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * documentation, and that the name of Red Hat not be used in advertising or 91176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * publicity pertaining to distribution of the software without specific, 101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * written prior permission. Red Hat makes no representations about the 111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * suitability of this software for any purpose. It is provided "as is" 121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * without express or implied warranty. 131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * 141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL 151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL RED HAT 161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION 181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck */ 211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#ifdef HAVE_CONFIG_H 231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#include <config.h> 241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif 251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#include <stdlib.h> 271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#include <stdio.h> 281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#include "pixman-private.h" 291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#ifdef PIXMAN_TIMERS 311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 321176bdada62cabc6ec4b0308a930e83b679d5d36John Reckstatic pixman_timer_t *timers; 331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 341176bdada62cabc6ec4b0308a930e83b679d5d36John Reckstatic void 351176bdada62cabc6ec4b0308a930e83b679d5d36John Reckdump_timers (void) 361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck pixman_timer_t *timer; 381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck for (timer = timers; timer != NULL; timer = timer->next) 401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck printf ("%s: total: %llu n: %llu avg: %f\n", 421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck timer->name, 431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck timer->total, 441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck timer->n_times, 451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck timer->total / (double)timer->n_times); 461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 491176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid 501176bdada62cabc6ec4b0308a930e83b679d5d36John Reckpixman_timer_register (pixman_timer_t *timer) 511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ 521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck static int initialized; 531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck int atexit (void (*function)(void)); 551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck if (!initialized) 571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck { 581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck atexit (dump_timers); 591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck initialized = 1; 601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck } 611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck timer->next = timers; 631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck timers = timer; 641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} 651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck 661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif 67