Поэтому я работаю над созданием кода, который использует библиотеку X11 для работы с X-Windows в Linux. Я нашел несколько простых руководств, но они не содержат подробностей о передовых практиках для более практических вариантов использования.
Меня интересует одна вещь: должен ли я сделать один вызов XOpenDisplay для каждого приложения и передать указатель на Display, или это нормально, чтобы вызывать эту функцию для каждого окна верхнего уровня?
Хотя вы можете использовать более одного соединения с X-сервером в своей прикладной программе, есть веская причина не делать этого: каждому соединению назначается диапазон идентификаторов ресурсов (даже если ваш клиент не создает свои собственные ресурсы), а идентификатор ресурса 32-битное число, поэтому общее количество соединений ограничено в X11 (и обычно составляет от 256 до 512 на большинстве систем)
Вам нужно только XOpenDisplay
один раз. Один дисплей может иметь много окон.