From 82ae06cf32514ae60ce5b9c04a48a4619c2252e0 Mon Sep 17 00:00:00 2001 From: Harald Fernengel Date: Tue, 7 Dec 2010 15:19:37 +0100 Subject: Optimize behavior of QGLTextureCache MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When we iterate over the cache to figure out which objects to remove, we would change the internal order of the cache, leading to a suboptimal caching behavior. Instead, let QCache decide which objects to remove when the cache overflows, based on its internal last-recently-used algorithm. Reviewed-by: Samuel Rødal --- src/opengl/qgl.cpp | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp index dc7a333..63df8c3 100644 --- a/src/opengl/qgl.cpp +++ b/src/opengl/qgl.cpp @@ -1853,18 +1853,6 @@ QGLTextureCache::~QGLTextureCache() void QGLTextureCache::insert(QGLContext* ctx, qint64 key, QGLTexture* texture, int cost) { QWriteLocker locker(&m_lock); - if (m_cache.totalCost() + cost > m_cache.maxCost()) { - // the cache is full - make an attempt to remove something - const QList keys = m_cache.keys(); - int i = 0; - while (i < m_cache.count() - && (m_cache.totalCost() + cost > m_cache.maxCost())) { - QGLTexture *tex = m_cache.object(keys.at(i)); - if (tex->context == ctx) - m_cache.remove(keys.at(i)); - ++i; - } - } const QGLTextureCacheKey cacheKey = {key, QGLContextPrivate::contextGroup(ctx)}; m_cache.insert(cacheKey, texture, cost); } -- cgit v0.12