Add destructor to unregister fonts from GfxRenderer

This commit is contained in:
jpirnay
2026-04-28 19:03:38 +02:00
parent ebb80bf4d9
commit 0466465d8c
2 changed files with 14 additions and 2 deletions
+13 -2
View File
@@ -9,8 +9,13 @@
#include <cstdlib>
SdCardFontManager::~SdCardFontManager() {
for (auto& lf : loaded_) {
delete lf.font;
if (renderer_) {
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) {
if (!renderer_) {
renderer_ = &renderer;
}
// Unload any previously loaded family first
if (!loadedFamilyName_.empty()) {
unloadAll(renderer);
@@ -80,6 +88,9 @@ bool SdCardFontManager::loadFamily(const SdCardFontFamilyInfo& family, GfxRender
}
void SdCardFontManager::unloadAll(GfxRenderer& renderer) {
if (!renderer_) {
renderer_ = &renderer;
}
renderer.clearSdCardFonts();
for (auto& lf : loaded_) {
renderer.removeFont(lf.fontId);
+1
View File
@@ -44,6 +44,7 @@ class SdCardFontManager {
};
static int computeFontId(uint32_t contentHash, const char* familyName, uint8_t pointSize);
GfxRenderer* renderer_ = nullptr;
std::string loadedFamilyName_;
uint8_t loadedPointSize_ = 0;
std::vector<LoadedFont> loaded_;