summaryrefslogtreecommitdiff
path: root/drawinglayer
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2014-10-24 15:10:15 +0100
committerCaolán McNamara <caolanm@redhat.com>2014-10-24 15:18:02 +0100
commite25a020d59b019893d2e04ac61e4ed25ef0a6e61 (patch)
tree4ae2f601940b621e6d443033b27726d43f501372 /drawinglayer
parent6a4b976bd0818c2f60b879594d393baad9a0f346 (diff)
Resolves: fdo#84729 buffer cache grows to over 9000 unused entries
regression from commit a5351434fbea1126961f5dbaa986e7c9e686c24e Author: tsahi glik <tsahi.glik@cloudon.com> Date: Thu Jan 16 12:51:44 2014 -0800 fix rendering issues in iOS with aqua because now the cache just fills up because nothing will have a depth of "0" and a new entry is created every time. 0 could be seen to mean "whatever is a good non-1bit depth" or auto or something. (Do the uses of "8" really mean 8) 0 passed to new VirtualDevice under Linux/X ends up using the depth of the outputdev, so here set nBits to that value to start with and the problem goes away Change-Id: I4390d6f7edef9dc7430cc77e3518dc751a5f479d
Diffstat (limited to 'drawinglayer')
-rw-r--r--drawinglayer/source/processor2d/vclhelperbufferdevice.cxx5
1 files changed, 5 insertions, 0 deletions
diff --git a/drawinglayer/source/processor2d/vclhelperbufferdevice.cxx b/drawinglayer/source/processor2d/vclhelperbufferdevice.cxx
index a3bdbf628dcf..94a155dd5ed9 100644
--- a/drawinglayer/source/processor2d/vclhelperbufferdevice.cxx
+++ b/drawinglayer/source/processor2d/vclhelperbufferdevice.cxx
@@ -85,6 +85,9 @@ namespace
::osl::MutexGuard aGuard(m_aMutex);
VirtualDevice* pRetval = 0;
+ if (nBits == 0)
+ nBits = rOutDev.GetBitCount();
+
if(!maFreeBuffers.empty())
{
bool bOkay(false);
@@ -183,6 +186,8 @@ namespace
maUsedBuffers.erase(aUsedFound);
maFreeBuffers.push_back(&rDevice);
+ SAL_WARN_IF(maFreeBuffers.size() > 1000, "drawinglayer", "excessive cached buffers, "
+ << maFreeBuffers.size() << " entries!");
Start();
}