Fix frame chug when loading big model asynchronously (LP #1019599)

This commit is contained in:
rdb 2016-07-12 11:24:09 +02:00
parent e098da9030
commit 7b7bf93118
2 changed files with 13 additions and 1 deletions

View File

@ -25,6 +25,7 @@ This issue fixes several bugs that were still found in 1.9.2.
* Work around Cg bug generating invalid ASM for saturated tex loads
* Fix issues with certain Cg shader inputs in DX9
* Support uint8 index buffers in DX9
* Fix occasional frame lag when loading a big model asynchronously
------------------------ RELEASE 1.9.2 ------------------------

View File

@ -321,13 +321,24 @@ emergency_read_only() {
////////////////////////////////////////////////////////////////////
void BamCache::
consider_flush_index() {
ReMutexHolder holder(_lock);
#if defined(HAVE_THREADS) || defined(DEBUG_THREADS)
if (!_lock.try_acquire()) {
// If we can't grab the lock, no big deal. We don't want to hold up
// the frame waiting for a cache operation. We can try again later.
return;
}
#endif
if (_index_stale_since != 0) {
int elapsed = (int)time(NULL) - (int)_index_stale_since;
if (elapsed > _flush_time) {
flush_index();
}
}
#if defined(HAVE_THREADS) || defined(DEBUG_THREADS)
_lock.release();
#endif
}
////////////////////////////////////////////////////////////////////