diff --git a/src/os/windows/font_win32.cpp b/src/os/windows/font_win32.cpp index 767dfb83ab0aa..8e8c74f8bd3d7 100644 --- a/src/os/windows/font_win32.cpp +++ b/src/os/windows/font_win32.cpp @@ -10,7 +10,6 @@ #include "../../stdafx.h" #include "../../debug.h" #include "../../blitter/factory.hpp" -#include "../../core/alloc_func.hpp" #include "../../core/math_func.hpp" #include "../../core/mem_func.hpp" #include "../../error_func.h" @@ -209,7 +208,7 @@ void Win32FontCache::ClearFontCache() if (width > MAX_GLYPH_DIM || height > MAX_GLYPH_DIM) UserError("Font glyph is too large"); /* Call GetGlyphOutline again with size to actually render the glyph. */ - uint8_t *bmp = new uint8_t[size]; + uint8_t *bmp = this->render_buffer.Allocate(size); GetGlyphOutline(this->dc, key, GGO_GLYPH_INDEX | (aa ? GGO_GRAY8_BITMAP : GGO_BITMAP), &gm, size, bmp, &mat); /* GDI has rendered the glyph, now we allocate a sprite and copy the image into it. */ @@ -259,8 +258,6 @@ void Win32FontCache::ClearFontCache() this->SetGlyphPtr(key, &new_glyph); - delete[] bmp; - return new_glyph.sprite; } diff --git a/src/os/windows/font_win32.h b/src/os/windows/font_win32.h index bdb2cc9a9bd55..eb6533f3fd3c8 100644 --- a/src/os/windows/font_win32.h +++ b/src/os/windows/font_win32.h @@ -10,6 +10,7 @@ #ifndef FONT_WIN32_H #define FONT_WIN32_H +#include "../../core/alloc_type.hpp" #include "../../fontcache/truetypefontcache.h" #include "win32.h" @@ -25,6 +26,8 @@ class Win32FontCache : public TrueTypeFontCache { SIZE glyph_size; ///< Maximum size of regular glyphs. std::string fontname; ///< Cached copy of loaded font facename + ReusableBuffer render_buffer; ///< Temporary buffer for rendering glyphs. + void SetFontSize(int pixels); protected: