Kaydet (Commit) 8094fa17 authored tarafından Noel Grandin's avatar Noel Grandin Kaydeden (comit) Noel Grandin

improve commit 95eb921ec06ee7

   "tdf#108608 more Draw text editing responsiveness fixes"

lru_map is fine on Windows, was a bug in the new clear method I
added.

Change-Id: I27565675dfe0f57e2ba3c3e0c50297770761dc6a
Reviewed-on: https://gerrit.libreoffice.org/52728Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarNoel Grandin <noel.grandin@collabora.co.uk>
üst 9c0684c9
......@@ -125,7 +125,7 @@ public:
const list_const_iterator_t end() const
{
return mLruList.end();
return mLruList.cend();
}
size_t size() const
......@@ -135,6 +135,7 @@ public:
void clear()
{
mLruMap.clear();
mLruList.clear();
}
};
......
......@@ -28,6 +28,7 @@
#include <svsys.h>
#include <vector>
#include <o3tl/lru_map.hxx>
#include <basegfx/matrix/b2dhommatrixtools.hxx>
#include <basegfx/polygon/b2dpolygon.hxx>
#include <i18nlangtag/mslangid.hxx>
......@@ -57,10 +58,9 @@
using namespace vcl;
// GetGlyphOutlineW() seems to be a little slow, and doesn't seem to do it's own caching (tested on Windows10).
// TODO use something a little smarter here like an LRU cache, and include the font as part of the cache key
// TODO include the font as part of the cache key, then we won't need to clear it on font change
// The cache limit is set by the rough number of characters needed to read your average Asian newspaper.
constexpr size_t BOUND_RECT_CACHE_SIZE = 3000;
static std::unordered_map<sal_GlyphId, tools::Rectangle> g_BoundRectCache;
static o3tl::lru_map<sal_GlyphId, tools::Rectangle> g_BoundRectCache(3000);
inline FIXED FixedFromDouble( double d )
{
......@@ -1340,8 +1340,6 @@ bool WinSalGraphics::GetGlyphBoundRect(const GlyphItem& rGlyph, tools::Rectangle
rRect = it->second;
return true;
}
if (g_BoundRectCache.size() > BOUND_RECT_CACHE_SIZE)
g_BoundRectCache.clear();
HDC hDC = getHDC();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment