0
我用下面的代碼來創建一些集成測試假的窗口:XCreateWindow在CentOS 5.6失敗,錯誤:BADVALUE
class CXWindowsClipboardTests
{
protected:
virtual void
SetUp()
{
m_display = XOpenDisplay(NULL);
int screen = DefaultScreen(m_display);
Window root = XRootWindow(m_display, screen);
XSetWindowAttributes attr;
attr.do_not_propagate_mask = 0;
attr.override_redirect = True;
attr.cursor = Cursor();
m_window = XCreateWindow(
m_display, root, 0, 0, 1, 1, 0, 0,
InputOnly, CopyFromParent,
CWDontPropagate | CWEventMask |
CWOverrideRedirect | CWCursor,
&attr);
}
virtual void
TearDown()
{
XDestroyWindow(m_display, m_window);
XCloseDisplay(m_display);
}
};
以上是原代碼的修改版本以減少佔用空間(見full source code)。
上面的代碼間歇性地無法在CentOS 5.6,出現以下錯誤:
X Error of failed request: BadValue
(integer parameter out of range for operation)
Major opcode of failed request: 1 (X_CreateWindow)
Value in failed request: 0x844b530
Serial number of failed request: 7
Current serial number in output stream: 8
所以,真正的兩個問題:
- 什麼會導致XCreateWindow對CentOS的間歇性地以這種方式失敗?
- 而且,我對X開發相當陌生,所以我不知道各種錯誤值的含義(例如失敗請求中的值)或如何使用它們。有人可以簡單地爲我解釋這些嗎?
謝謝。我試圖在集成測試中複製真實環境,但由於我只是在剪貼板上做東西,也許我可以有一個0值掩碼。 – 2011-05-12 22:25:11
今天的綠色建築,似乎已經成功了!乾杯。 – 2011-05-13 19:37:28