我目前在Xlib和CEF上遇到一些问题,我需要研究发送到XErrorEvent
注册的函数的XSetErrorHandler
。
typedef struct {
int type;
Display *display; /* Display the event was read from */
XID resourceid; /* resource id */
unsigned long serial; /* serial number of failed request */
unsigned char error_code; /* error code of failed request */
unsigned char request_code; /* Major op-code of failed request */
unsigned char minor_code; /* Minor op-code of failed request */
} XErrorEvent;
我想知道type
,request_code
和minor_code
字段的含义。 There is a book on C language interface for the X window system,但我在此字段中找不到任何内容。
答案 0 :(得分:1)
type
将无类型的内存指针标识为指向XErrorEvent的指针-其值始终为X_Error
。
request_code
是a protocol request of the procedure that failed, as defined in X11/Xproto.h,基本上是哪种请求产生了错误(2020行及更高版本):
/* Request codes */
#define X_CreateWindow 1
#define X_ChangeWindowAttributes 2
#define X_GetWindowAttributes 3
#define X_DestroyWindow 4
#define X_DestroySubwindows 5
#define X_ChangeSaveSet 6
#define X_ReparentWindow 7
#define X_MapWindow 8
...
minor_code
与request_code
类似,但扩展名使用。每个扩展名都有自己的request_code
,范围为128-255。 minor_code
标识由该扩展名定义的特定请求。因此,X11最多支持127个扩展,每个扩展最多可以定义255个请求。 The exact paragraph:
为每个扩展名分配了该范围内的单个操作码,也称为 因为它是“主要操作码”。对于该扩展程序提供的每个操作, 通常,第二个字节用作“次要操作码”。 每个扩展名都由扩展名定义。