コード例 #1
0
ファイル: timer.cpp プロジェクト: paulsapps/OpenGTA2
//This rewrites internal variables, and must be threadsafe
void Timer_Manager::Frame() {
	if (FPSLimit > 0.0f) {
		while (Time() - lastftime < 1.0f / FPSLimit) Thread.Sleep();
		lastftime = Time();
	}
	LockID timerLock = Thread.EnterLock(MUTEX_TIMER);
		float rdt = (_curtime() - lasttime); //real delta
		dt = min(0.5f,rdt); //clamped to prevent deltatime spikes
		lasttime = _curtime();
		totalFrames++;
		curfps = 1 / rdt;
	Thread.LeaveLock(timerLock);
}
コード例 #2
0
ファイル: metacache_fs.c プロジェクト: metux/libmvfs
static METACACHE_RECORD* _cache_lookup(METACACHE_FS_PRIV* fspriv, const char* filename)
{
    METACACHE_RECORD* rec;
    
    // FIXME: do a lookup
    if ((hash_retrieve(&(fspriv->cache), (char*)filename, (void**)&rec)) && (rec!=NULL))
    {
	if ((rec->mtime+CACHE_TIMEOUT) > _curtime()) 
	{
	    DEBUGMSG("cached: %s", filename);
	    return rec;
	}
	
	DEBUGMSG("purging old cache record for %s", filename);
	mvfs_stat_free(rec->stat);
	rec->stat = NULL;
	return rec;
    }

    // ... lookup failed - no record yet
    rec = calloc(1,sizeof(METACACHE_RECORD));
    rec->filename = strdup(filename);
    
    // now insert
    hash_insert(&(fspriv->cache),rec->filename,rec);
    return rec;
}
コード例 #3
0
ファイル: timer.cpp プロジェクト: paulsapps/OpenGTA2
//FIXME: this one isn't really needed
void Timer_Manager::Initialize() {
	LockID timerLock = Thread.EnterLock(MUTEX_TIMER);
		starttime = _curtime();
		lasttime = starttime;

		timeRunning = true;
		FPSLimit = 0.0f;
		lastftime = lasttime;
	Thread.LeaveLock(timerLock);
}
コード例 #4
0
ファイル: metacache_fs.c プロジェクト: metux/libmvfs
static void _cache_clear(METACACHE_RECORD* rec)
{
    if (rec == NULL)
    {
	DEBUGMSG("NULL rec passed");
	return;
    }
    rec->mtime = _curtime();
    mvfs_stat_free(rec->stat);
    rec->stat = NULL;
}
コード例 #5
0
ファイル: timer.cpp プロジェクト: paulsapps/OpenGTA2
float Timer_Manager::Time() {
	return (_curtime()-starttime);
}
コード例 #6
0
ファイル: metacache_fs.c プロジェクト: metux/libmvfs
static void _cache_set(METACACHE_RECORD* rec, MVFS_STAT* st)
{
    rec->mtime = _curtime();
    mvfs_stat_free(rec->stat);
    rec->stat = (st ? mvfs_stat_dup(st) : NULL);
}