diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2018-01-09 16:03:13 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-09 16:03:13 +0100 |
commit | e1c799f1b41211f2d0dc1f5adbdffed43727b99a (patch) | |
tree | 29608358878003acc920e0f62adab44f5ca0b6c4 | |
parent | 3c0dd37744cb0d84d5bbbb4c50263951f888cae3 (diff) | |
parent | a64dc5af7409174a9e1ad9d053aa8cafb2da1abb (diff) |
Merge pull request #15495 from poke1024/font-oversampling
Two potential glitches in font oversampling
-rw-r--r-- | scene/resources/dynamic_font.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/scene/resources/dynamic_font.cpp b/scene/resources/dynamic_font.cpp index 575c222cc1..b35a9ae963 100644 --- a/scene/resources/dynamic_font.cpp +++ b/scene/resources/dynamic_font.cpp @@ -631,6 +631,7 @@ bool DynamicFontAtSize::update_oversampling() { textures.clear(); char_map.clear(); oversampling = font_oversampling; + valid = false; _load(); return true; @@ -973,14 +974,26 @@ void DynamicFont::finish_dynamic_fonts() { void DynamicFont::update_oversampling() { + Vector<Ref<DynamicFont> > changed; + + if (dynamic_font_mutex) + dynamic_font_mutex->lock(); + SelfList<DynamicFont> *E = dynamic_fonts.first(); while (E) { if (E->self()->data_at_size.is_valid() && E->self()->data_at_size->update_oversampling()) { - E->self()->emit_changed(); + changed.push_back(E->self()); } E = E->next(); } + + if (dynamic_font_mutex) + dynamic_font_mutex->unlock(); + + for (int i = 0; i < changed.size(); i++) { + changed[i]->emit_changed(); + } } ///////////////////////// |