gpt4 book ai didi

c++ - XCreateWindow 在 CentOS 5.6 上失败,错误为 : BadValue

转载 作者:行者123 更新时间:2023-11-28 08:20:47 25 4
gpt4 key购买 nike

我正在使用以下代码为一些集成测试创建一个假窗口:

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 开发还很陌生,所以我不知道各种错误值的含义(例如失败请求中的值)或如何使用它们。有人可以为我简要解释一下吗?

最佳答案

您正在使用 CWEventMask 但未初始化 attr.event_mask。这可能是你的问题。 (由于该结构是在堆栈上创建的,因此它将在该字段中包含随机数据。)

关于c++ - XCreateWindow 在 CentOS 5.6 上失败,错误为 : BadValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5927826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com