2013-01-16 30 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

相關問題