Я пытаюсь создать приложение с поддержкой DPI, которое реагирует на запрошенные пользователем события изменения DPI, изменяя размер окна.
Рассматриваемая программа создана на C и использует SDL2, однако для получения информации о системном DPI я использую xlib напрямую, поскольку поддержка SDL DPI в X11 отсутствует.
Я нашел два способа получить правильную информацию о DPI при запуске программы, оба из которых связаны с получением информации Xft.dpi из Xresource: один — использовать XGetDefault(display, «Xft», «dpi»), а другой — использовать XResourceManagerString, XrmGetStringDatabase. и XrmGetResource. Оба они возвращают правильное значение DPI при создании программы.
Проблема в том, что если пользователь изменяет масштаб системы во время работы программы, оба XGetDefault и XrmGetResource по-прежнему возвращают старое значение DPI, хотя когда я запускаю «xrdb -query | grep Xft.dpi», значение действительно изменилось.
Кто-нибудь знает способ получить обновленное значение Xft.dpi?