2014-06-20 56 views
0

最近我跟蹤一個程序我一直在一些奇怪的行爲。座標傳遞給XDrawImageString()

該方案與在循環中使用

XDrawImageString(d, w, DefaultGC(d, s), x, y, str_to_draw, strlen(str_to_draw)); 

寫有大量文本的X11狀態窗口。從窗口底部開始沒有檢查,我總是認爲從窗口邊緣劃出的東西是被忽略的,但是我發現如果它試圖從東西的底部畫太遠的東西窗口,而不是被忽略,它可以環繞並再次開始在窗口頂部繪製。

通過在循環開始時調用XGetGeometry()並檢查座標是否超出窗口的尺寸可以防止這種行爲,更令人擔憂的是,看起來這不僅僅是環繞導致屏幕腐敗,但偶爾的核心轉儲。不能完全確定核心轉儲位,但我現在遇到了一個我認爲是這樣的問題。

問題:

如何小心就一個需要與座標傳給XDrawImageString()

如何小心就一個需要與傳遞的字符串長度?如果存在與底部的問題,它迴避了一個問題,如果你去關閉邊緣,右手的方向會發生什麼。

如何依賴於X11的實施是應對任何的嗎?

回答

0

X11座標實際上是16位的,所以如果你去過去65535在任何尺寸,你將有一個周圍包裹(和浪費的過程中大量的資源)。

相關問題