From 1041b3bbad62766df85393254a93602a1851895a Mon Sep 17 00:00:00 2001 From: FlavioJS Date: Tue, 25 Sep 2007 01:58:31 +0000 Subject: * Disabled tick cache (to enable it: define TICK_CACHE to the number of calls that should be cached). * Added a charid2sd database for fast charid searches. * Reworked the nick cache to only contain offline characters. Note: The tick cache was causing _some_ of the desync problems in eA. Gameplay should be much smother, but desync problems still exist. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@11290 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/common/timer.c | 29 ++++++++++++++++++++++++----- src/common/timer.h | 4 ++++ 2 files changed, 28 insertions(+), 5 deletions(-) (limited to 'src/common') diff --git a/src/common/timer.c b/src/common/timer.c index 15e50a05d..a24e2da8f 100644 --- a/src/common/timer.c +++ b/src/common/timer.c @@ -109,19 +109,21 @@ char* search_timer_func_list(TimerFunc func) /*---------------------------- * Get tick time *----------------------------*/ -static unsigned int gettick_cache; -static int gettick_count; +////////////////////////////////////////////////////////////////////////// +#if defined(TICK_CACHE) && TICK_CACHE > 1 +////////////////////////////////////////////////////////////////////////// +// tick is cached for TICK_CACHE calls unsigned int gettick_nocache(void) { -#ifdef _WIN32 - gettick_count = 256; +#ifdef WIN32 + gettick_count = TICK_CACHE; return gettick_cache = GetTickCount(); #else struct timeval tval; gettimeofday(&tval, NULL); - gettick_count = 256; + gettick_count = TICK_CACHE; return gettick_cache = tval.tv_sec * 1000 + tval.tv_usec / 1000; #endif @@ -134,6 +136,23 @@ unsigned int gettick(void) return gettick_cache; } +////////////////////////////// +#else +////////////////////////////// +// tick doesn't get cached +unsigned int gettick(void) +{ +#ifdef WIN32 + return GetTickCount(); +#else + struct timeval tval; + gettimeofday(&tval, NULL); + return tval.tv_sec * 1000 + tval.tv_usec / 1000; +#endif +} +////////////////////////////////////////////////////////////////////////// +#endif +////////////////////////////////////////////////////////////////////////// /*====================================== * CORE : Timer Heap diff --git a/src/common/timer.h b/src/common/timer.h index b75cc6641..cbefbe158 100644 --- a/src/common/timer.h +++ b/src/common/timer.h @@ -41,7 +41,11 @@ struct TimerData { // Function prototype declaration +#if defined(TICK_CACHE) && TICK_CACHE > 1 unsigned int gettick_nocache(void); +#else +#define gettick_nocache gettick +#endif unsigned int gettick(void); int add_timer(unsigned int,TimerFunc f,int,int); -- cgit v1.2.3-70-g09d2