我目前在使用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但是我找不到关于这个领域的任何信息。
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:
每个扩展都分配了该范围内的单个操作码,也称为“主操作码”。对于该扩展提供的每个操作,通常将第二个字节用作“次操作码”。每个扩展的次要操作码由延期。