mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Clean up and fix freetype=false crashes (#8641)
A IGUIFont of type bitmap/vector cannot be converted to CGUITTFont Fixes various segfaults in gameplay Shorter font cache code, cleaned up (?)
This commit is contained in:
parent
8e757859d6
commit
233cb86e86
4 changed files with 145 additions and 267 deletions
|
@ -77,7 +77,7 @@ GUIChatConsole::GUIChatConsole(
|
|||
m_font = g_fontengine->getFont(FONT_SIZE_UNSPECIFIED, FM_Mono);
|
||||
|
||||
if (!m_font) {
|
||||
errorstream << "GUIChatConsole: Unable to load mono font ";
|
||||
errorstream << "GUIChatConsole: Unable to load mono font" << std::endl;
|
||||
} else {
|
||||
core::dimension2d<u32> dim = m_font->getDimension(L"M");
|
||||
m_fontsize = v2u32(dim.Width, dim.Height);
|
||||
|
@ -322,9 +322,9 @@ void GUIChatConsole::drawText()
|
|||
core::rect<s32> destrect(
|
||||
x, y, x + m_fontsize.X * fragment.text.size(), y + m_fontsize.Y);
|
||||
|
||||
|
||||
#if USE_FREETYPE
|
||||
// Draw colored text if FreeType is enabled
|
||||
#if USE_FREETYPE
|
||||
if (m_font->getType() == irr::gui::EGFT_CUSTOM) {
|
||||
// Draw colored text if FreeType is enabled
|
||||
irr::gui::CGUITTFont *tmp = dynamic_cast<irr::gui::CGUITTFont *>(m_font);
|
||||
tmp->draw(
|
||||
fragment.text,
|
||||
|
@ -333,8 +333,10 @@ void GUIChatConsole::drawText()
|
|||
false,
|
||||
false,
|
||||
&AbsoluteClippingRect);
|
||||
#else
|
||||
// Otherwise use standard text
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
// Otherwise use standard text
|
||||
m_font->draw(
|
||||
fragment.text.c_str(),
|
||||
destrect,
|
||||
|
@ -342,7 +344,7 @@ void GUIChatConsole::drawText()
|
|||
false,
|
||||
false,
|
||||
&AbsoluteClippingRect);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue