From 82ae06cf32514ae60ce5b9c04a48a4619c2252e0 Mon Sep 17 00:00:00 2001
From: Harald Fernengel <harald.fernengel@nokia.com>
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<QGLTextureCacheKey> 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