2013-01-16 28 views
0

所以我正在开发使用X11库X-Windows的Linux上工作的一些代码。我发现了一些简单的教程,但他们没有详细介绍有关更实用用例的最佳实践。最佳实践 - 每个应用程序一个XOpenDisplay,或每个窗口?

我想知道的一件事是,我应该在每个应用程序中对XOpenDisplay进行一次调用并传递指向Display的指针,还是可以为每个顶级窗口调用此函数?

+0

您正在做什么有两个原因:您需要一个GUI来获取某些内容或想要学习。对于前者,在X11上使用小部件可能更有成效。对于后者,考虑使用XCB而不是Xlib,因为它更接近实际协议。祝你好运! –

+0

这是一个高性能的3D应用程序(类似于游戏引擎),它需要很少的本地GUI功能,并且我希望限制依赖关系和最大范围。我想使用类似的Qt将是什么,我需要有点重,这主要是达极少数的简单顶级窗口,其余正在通过OpenGL做的只是创建和管理。 (有,我喜欢避免过剩和SDL以及原因。) – Gerald

回答

1

虽然您可以在应用程序中使用多个到X服务器的连接,但不要这么做:每个连接都分配了资源ID范围(即使您的客户端没有创建自己的资源),并且资源ID是32位数字,因此X11中的连接总数受到限制(and is usually as low as 256 to 512 on most systems

1

你应该只需要XOpenDisplay一次。一台显示器可以有很多窗口。

+0

这是真的吗?我发现,它似乎需要被调用每个线程一次,除非我想申请冻结,需要第二'XOpenDisplay'对于具有辅助线程将消息发送到一个窗口看似平凡的任务。 – camelccc

相关问题