Add destructor to unregister fonts from GfxRenderer
This commit is contained in:
@@ -9,8 +9,13 @@
|
|||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
|
|
||||||
SdCardFontManager::~SdCardFontManager() {
|
SdCardFontManager::~SdCardFontManager() {
|
||||||
for (auto& lf : loaded_) {
|
if (renderer_) {
|
||||||
delete lf.font;
|
unloadAll(*renderer_);
|
||||||
|
} else {
|
||||||
|
for (auto& lf : loaded_) {
|
||||||
|
delete lf.font;
|
||||||
|
}
|
||||||
|
loaded_.clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -31,6 +36,9 @@ int SdCardFontManager::computeFontId(uint32_t contentHash, const char* familyNam
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool SdCardFontManager::loadFamily(const SdCardFontFamilyInfo& family, GfxRenderer& renderer, uint8_t targetPtSize) {
|
bool SdCardFontManager::loadFamily(const SdCardFontFamilyInfo& family, GfxRenderer& renderer, uint8_t targetPtSize) {
|
||||||
|
if (!renderer_) {
|
||||||
|
renderer_ = &renderer;
|
||||||
|
}
|
||||||
// Unload any previously loaded family first
|
// Unload any previously loaded family first
|
||||||
if (!loadedFamilyName_.empty()) {
|
if (!loadedFamilyName_.empty()) {
|
||||||
unloadAll(renderer);
|
unloadAll(renderer);
|
||||||
@@ -80,6 +88,9 @@ bool SdCardFontManager::loadFamily(const SdCardFontFamilyInfo& family, GfxRender
|
|||||||
}
|
}
|
||||||
|
|
||||||
void SdCardFontManager::unloadAll(GfxRenderer& renderer) {
|
void SdCardFontManager::unloadAll(GfxRenderer& renderer) {
|
||||||
|
if (!renderer_) {
|
||||||
|
renderer_ = &renderer;
|
||||||
|
}
|
||||||
renderer.clearSdCardFonts();
|
renderer.clearSdCardFonts();
|
||||||
for (auto& lf : loaded_) {
|
for (auto& lf : loaded_) {
|
||||||
renderer.removeFont(lf.fontId);
|
renderer.removeFont(lf.fontId);
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ class SdCardFontManager {
|
|||||||
};
|
};
|
||||||
static int computeFontId(uint32_t contentHash, const char* familyName, uint8_t pointSize);
|
static int computeFontId(uint32_t contentHash, const char* familyName, uint8_t pointSize);
|
||||||
|
|
||||||
|
GfxRenderer* renderer_ = nullptr;
|
||||||
std::string loadedFamilyName_;
|
std::string loadedFamilyName_;
|
||||||
uint8_t loadedPointSize_ = 0;
|
uint8_t loadedPointSize_ = 0;
|
||||||
std::vector<LoadedFont> loaded_;
|
std::vector<LoadedFont> loaded_;
|
||||||
|
|||||||
Reference in New Issue
Block a user