【问题标题】:Best practice for X11 application - one XOpenDisplay per application, or per window?X11 应用程序的最佳实践 - 每个应用程序或每个窗口一个 XOpenDisplay?
【发布时间】:2013-01-16 05:48:17
【问题描述】:

所以我正在开发一些使用 X11 库在 Linux 上与 X-Windows 一起工作的代码。我找到了一些简单的教程,但它们没有详细介绍更多实际用例的最佳实践。

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

【问题讨论】:

  • 您正在做的事情有两个原因:您需要一个 GUI 来做某事,或者您想学习。对于前者,使用在 X11 之上设置的小部件可能更有效率。对于后者,请考虑使用 XCB 而不是 Xlib,因为它更接近实际协议。祝你好运!
  • 它适用于高性能 3D 应用程序(类似于游戏引擎),几乎不需要原生 GUI 功能,并且我想限制依赖关系并最大化范围。我认为使用 Qt 之类的东西对于我需要的东西来说有点繁重,这主要是创建和管理最多少数简单的顶级窗口,其余的通过 OpenGL 完成。 (有一些原因我也更喜欢避免 GLUT 和 SDL。)

标签: c++ x11


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 这是真的吗?我发现它似乎需要每个线程调用一次,除非我希望应用程序冻结,需要第二个 XOpenDisplay 来完成看似平凡的任务,即让辅助线程将消息发送到窗口。
    猜你喜欢
    • 2014-04-18
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多