Mercurial > MadButterfly
view src/timertool.c @ 269:c96f38ad4bb6
Fix mis-behavior of translate_path_data() on arc.
- Arc in a path in svg2code_ex is not showed.
- translate_path_data() in svg2code.py was modified for calling
binary version new method for path shape.
- rdman_shape_path_new_from_binary()
- Code to translate path data does not handle arc in a right way.
- Copy calc_center_and_x_aix() from shape_path.c to svg2code.py and
change name _calc_ellipse_of_arc()
- _calc_ellipse_of_arc() handle arc data for translate_path_data()
author | Thinker K.F. Li <thinker@branda.to> |
---|---|
date | Sun, 25 Jan 2009 00:20:34 +0800 |
parents | 530bb7728546 |
children | 586e50f82c1f |
line wrap: on
line source
#include <stdio.h> #include <sys/time.h> #ifdef __FreeBSD__ #include <machine/cpufunc.h> #include <sys/types.h> #include <sys/sysctl.h> #endif #include "mb_timer.h" #ifdef __FreeBSD__ void get_now(mb_timeval_t *tmo) { struct timeval tv; static uint64_t cpufreq; static uint64_t diff; static mb_timeval_t tm = {0, 0}; static uint64_t last_ts; mb_timeval_t diff_tm; uint64_t ts, udiff, sdiff; size_t sysctl_sz; int r; if(MB_TIMEVAL_SEC(&tm) == 0) { sysctl_sz = sizeof(uint64_t); r = sysctlbyname("kern.timecounter.tc.TSC.frequency", &cpufreq, &sysctl_sz, NULL, 0); if(r == -1) { perror("sysctl"); return; } gettimeofday(&tv, NULL); last_ts = rdtsc(); MB_TIMEVAL_SET(tmo, tv.tv_sec, tv.tv_usec); MB_TIMEVAL_CP(&tm, tmo); diff = 0; } else { ts = rdtsc(); diff += ts - last_ts; sdiff = diff / cpufreq; udiff = (diff % cpufreq) * 1000000 / cpufreq; MB_TIMEVAL_SET(&diff_tm, sdiff, udiff); MB_TIMEVAL_CP(tmo, &tm); MB_TIMEVAL_ADD(tmo, &diff_tm); MB_TIMEVAL_SET(&diff_tm, sdiff, 0); MB_TIMEVAL_ADD(&tm, &diff_tm); diff %= cpufreq; last_ts = ts; } } #else /* __FreeBSD__ */ void get_now(mb_timeval_t *tmo) { struct timeval tv; gettimeofday(&tv, NULL); MB_TIMEVAL_SET(tmo, tv.tv_sec, tv.tv_usec); } #endif /* __FreeBSD__ */