Xlib 扩展开发指南
1. 扩展概述
在 X 系统里,核心协议能够借助扩展来实现功能的演进。所以,扩展不应被视为二等公民,在未来,你喜爱的扩展或许会成为 X 标准的一部分。为了让扩展的使用与核心协议的使用几乎没有差别,扩展应采用惰性评估机制,在首次被调用时自动完成初始化,避免在应用程序里显式地对其进行初始化。
同时要注意,一个 X 扩展通常由多个请求构成,把 10 个新特性定义成 10 个独立的扩展并非好做法,而应该将它们封装成一个扩展,利用次要操作码来区分不同的请求。编写 Xlib 存根所需的符号和宏在<X11/Xlibint.h>中列出。
2. 基本协议支持例程
扩展的基本协议请求主要有XQueryExtension和XListExtensions这两个函数。
2.1 XQueryExtension 函数
Bool XQueryExtension(Display *display, const char *name, int *major_opcode_return, int *first_event_return, int *first_error_return);display:指定与 X 服务器的连接。name:指定扩展的名称。