在基於XLib的應用程序中,我需要使子窗口在父窗口之後調整大小。 (例如,爲了使子窗口占據父窗口的整個客戶區域)XLib窗口自動對齊性能
我正在處理父窗口的ConfigureNotify事件並在需要時調整子窗口的大小。
在一般情況下,它工作正常。但是,在調整父窗口大小(例如,當用戶調整拖動邊緣的窗口大小)和應用程序收到的事件之間存在延遲。
由於這種延遲,子窗口僅在用戶停止移動邊緣一段時間後纔會採用適當的大小。這樣,屏幕上出現一些不好的閃爍,用戶界面看起來很慢。
我可以在許多Linux程序中看到類似的行爲。
如何解決這個問題?或者至少,如何使延遲顯着變小?
我試圖忽略一些ConfigureNotify事件,只處理最後收到的事件,它有一點幫助,但還不夠。
更新:
一些研究,我發現,這個問題是由於WM應用程序交互的異步特性之後。在應用程序調整並重新繪製子窗口時,窗口管理器繼續調整父窗口的大小。所以,當resize/realign/redraw過程完成時,父窗口具有另一個大小,另一個事件被髮送到事件隊列,並且所有事件都必須從頭開始。
嘗試在調整子窗口大小後調用'XFlush()'。 –
根本沒有效果。 – johnfound
@ n.m。這個問題有一個更新 - 更多的實驗結果。 – johnfound