fix: brief freezes after file dialogs / fontconfig methods are used

This commit is contained in:
2026-01-12 23:52:33 +03:00
parent d852d58948
commit 2b1c6d59c4
6 changed files with 46 additions and 7 deletions

View File

@@ -6,9 +6,12 @@
#include <algorithm>
#include <fontconfig/fontconfig.h>
#include <imgui.h>
#include <GLFW/glfw3.h>
std::string font_loader::find_font_linux(const char *font_name)
{
glfwPollEvents();
FcInit();
FcPattern *pattern = FcNameParse(reinterpret_cast<const FcChar8 *>(font_name));
@@ -65,6 +68,8 @@ std::vector<std::string> font_loader::get_system_fonts()
{
std::vector<std::string> fonts;
glfwPollEvents();
FcInit();
FcPattern *pattern = FcPatternCreate();
FcObjectSet *os = FcObjectSetBuild(FC_FAMILY, nullptr);
@@ -74,6 +79,12 @@ std::vector<std::string> font_loader::get_system_fonts()
{
for (int i = 0; i < fs->nfont; i++)
{
// TODO: should change this to something sane
if (i % 100 == 0)
{
glfwPollEvents();
}
FcChar8 *family = nullptr;
if (FcPatternGetString(fs->fonts[i], FC_FAMILY, 0, &family) == FcResultMatch)
{