X11 错误:BadValue(整数参数超出操作范围)

X11 错误:BadValue(整数参数超出操作范围)

这意味着什么根本问题?哪个整数参数超出范围?源代码是哪部分?最重要的是,我该如何解决这个问题?

[vo/opengl/x11] X11 error: BadValue (integer parameter out of range for operation)
[vo/opengl/x11] Type: 0, display: 0x7f264c43f950, resourceid: 0, serial: 3f
[vo/opengl/x11] Error code: 2, request code: 9a, minor code: 3

答案1

[vo/opengl/x11] Error code: 2, request code: 9a, minor code: 3

该错误是由扩展请求生成的:所有 >= 128 的请求代码均保留用于扩展 (0x9a = 154)。

您必须首先获取使用 154 操作码的扩展:

$ xdpyinfo -queryExtensions | grep 'opcode: 154'
    XFree86-VidModeExtension  (opcode: 154, base error: 175)

您的 Xserver 可能会以不同的方式分配操作码;假设它XF86VidMode和我的一样,您可以在协议标头(或在xcb xml 规范) 该扩展名:

grep 'X_.*\<3\>' /usr/include/X11/extensions/xf86vmproto.h
#define X_XF86VidModeSwitchMode         3

在这种情况下,它是XF86VidModeSwitchMode(dpy, screen, zoom).

当然,编写该程序的人可以设置一个更好的 X11 错误处理程序,而不是那些code: hex废话(默认的 X11 错误处理程序,至少对于较新的 X11 库来说,要好得多)。但这样的话,其中的乐趣在哪里呢?

相关内容