From 2e4e1dd590d7eb8fddeb800d5b94a21c3375d6c3 Mon Sep 17 00:00:00 2001 From: Zach Pomerantz Date: Thu, 14 Apr 2016 15:52:09 -0700 Subject: [PATCH] Fix leaking Font --- libraries/render-utils/src/TextRenderer3D.cpp | 3 --- libraries/render-utils/src/TextRenderer3D.h | 7 ++----- libraries/render-utils/src/text/Font.cpp | 12 ++++++------ libraries/render-utils/src/text/Font.h | 6 ++++-- 4 files changed, 12 insertions(+), 16 deletions(-) diff --git a/libraries/render-utils/src/TextRenderer3D.cpp b/libraries/render-utils/src/TextRenderer3D.cpp index 81e9378815..9c85952107 100644 --- a/libraries/render-utils/src/TextRenderer3D.cpp +++ b/libraries/render-utils/src/TextRenderer3D.cpp @@ -54,9 +54,6 @@ TextRenderer3D::TextRenderer3D(const char* family, float pointSize, int weight, } } -TextRenderer3D::~TextRenderer3D() { -} - glm::vec2 TextRenderer3D::computeExtent(const QString& str) const { if (_font) { return _font->computeExtent(str); diff --git a/libraries/render-utils/src/TextRenderer3D.h b/libraries/render-utils/src/TextRenderer3D.h index 9d48ca1a6c..175802ef6e 100644 --- a/libraries/render-utils/src/TextRenderer3D.h +++ b/libraries/render-utils/src/TextRenderer3D.h @@ -12,11 +12,10 @@ #ifndef hifi_TextRenderer3D_h #define hifi_TextRenderer3D_h +#include #include #include - - namespace gpu { class Batch; } @@ -34,8 +33,6 @@ public: static TextRenderer3D* getInstance(const char* family, float pointSize = DEFAULT_POINT_SIZE, bool bold = false, bool italic = false, EffectType effect = NO_EFFECT, int effectThickness = 1); - ~TextRenderer3D(); - glm::vec2 computeExtent(const QString& str) const; float getFontSize() const; // Pixel size @@ -55,7 +52,7 @@ private: // text color glm::vec4 _color; - Font* _font; + std::shared_ptr _font; }; diff --git a/libraries/render-utils/src/text/Font.cpp b/libraries/render-utils/src/text/Font.cpp index 3c460fdd99..e7604544bd 100644 --- a/libraries/render-utils/src/text/Font.cpp +++ b/libraries/render-utils/src/text/Font.cpp @@ -47,15 +47,15 @@ struct QuadBuilder { -static QHash LOADED_FONTS; +static QHash LOADED_FONTS; -Font* Font::load(QIODevice& fontFile) { - Font* result = new Font(); - result->read(fontFile); - return result; +Font::Pointer Font::load(QIODevice& fontFile) { + Pointer font = std::make_shared(); + font->read(fontFile); + return font; } -Font* Font::load(const QString& family) { +Font::Pointer Font::load(const QString& family) { if (!LOADED_FONTS.contains(family)) { static const QString SDFF_COURIER_PRIME_FILENAME{ ":/CourierPrime.sdff" }; diff --git a/libraries/render-utils/src/text/Font.h b/libraries/render-utils/src/text/Font.h index 351bc63163..5b6b4f2a43 100644 --- a/libraries/render-utils/src/text/Font.h +++ b/libraries/render-utils/src/text/Font.h @@ -17,6 +17,8 @@ class Font { public: + using Pointer = std::shared_ptr; + Font(); void read(QIODevice& path); @@ -29,8 +31,8 @@ public: const glm::vec4* color, EffectType effectType, const glm::vec2& bound, bool layered = false); - static Font* load(QIODevice& fontFile); - static Font* load(const QString& family); + static Pointer load(QIODevice& fontFile); + static Pointer load(const QString& family); private: QStringList tokenizeForWrapping(const QString& str) const;