X Window研究笔记(13)
2007-09-27 21:44
337 查看
X Window研究笔记(13)
转载时请注明出处和作者联系方式
作者联系方式:李先静 <xianjimli at hotmail dot com>
13.X Window扩展机制--客户端勾子函数
扩展模块是X Window的主要扩展方式,前面我们介绍它在X Server中的实现。其实在客户端,X Window也为扩展模块扩展提供了方便,以此可以hook一些重要的功能,很多扩展模块都利用了这种机制。hook接口如下:
typedef struct _XExtensionHooks ...{
int (*create_gc)(
Display* /**//* display */,
GC /**//* gc */,
XExtCodes* /**//* codes */
);
int (*copy_gc)(
Display* /**//* display */,
GC /**//* gc */,
XExtCodes* /**//* codes */
);
int (*flush_gc)(
Display* /**//* display */,
GC /**//* gc */,
XExtCodes* /**//* codes */
);
int (*free_gc)(
Display* /**//* display */,
GC /**//* gc */,
XExtCodes* /**//* codes */
);
int (*create_font)(
Display* /**//* display */,
XFontStruct* /**//* fs */,
XExtCodes* /**//* codes */
);
int (*free_font)(
Display* /**//* display */,
XFontStruct* /**//* fs */,
XExtCodes* /**//* codes */
);
int (*close_display)(
Display* /**//* display */,
XExtCodes* /**//* codes */
);
Bool (*wire_to_event)(
Display* /**//* display */,
XEvent* /**//* re */,
xEvent* /**//* event */
);
Status (*event_to_wire)(
Display* /**//* display */,
XEvent* /**//* re */,
xEvent* /**//* event */
);
int (*error)(
Display* /**//* display */,
xError* /**//* err */,
XExtCodes* /**//* codes */,
int* /**//* ret_code */
);
char *(*error_string)(
Display* /**//* display */,
int /**//* code */,
XExtCodes* /**//* codes */,
char* /**//* buffer */,
int /**//* nbytes */
);
} XExtensionHooks;
在上面这些函数中,close_display(关闭DISPLAY时被调用),wire_to_event(发现事件时被调用)和 event_to_wire(发出事件时被调用)三个函数使用最为频繁。
示例可以参考lib/Xext中的代码。
(待续)
转载时请注明出处和作者联系方式
作者联系方式:李先静 <xianjimli at hotmail dot com>
13.X Window扩展机制--客户端勾子函数
扩展模块是X Window的主要扩展方式,前面我们介绍它在X Server中的实现。其实在客户端,X Window也为扩展模块扩展提供了方便,以此可以hook一些重要的功能,很多扩展模块都利用了这种机制。hook接口如下:
typedef struct _XExtensionHooks ...{
int (*create_gc)(
Display* /**//* display */,
GC /**//* gc */,
XExtCodes* /**//* codes */
);
int (*copy_gc)(
Display* /**//* display */,
GC /**//* gc */,
XExtCodes* /**//* codes */
);
int (*flush_gc)(
Display* /**//* display */,
GC /**//* gc */,
XExtCodes* /**//* codes */
);
int (*free_gc)(
Display* /**//* display */,
GC /**//* gc */,
XExtCodes* /**//* codes */
);
int (*create_font)(
Display* /**//* display */,
XFontStruct* /**//* fs */,
XExtCodes* /**//* codes */
);
int (*free_font)(
Display* /**//* display */,
XFontStruct* /**//* fs */,
XExtCodes* /**//* codes */
);
int (*close_display)(
Display* /**//* display */,
XExtCodes* /**//* codes */
);
Bool (*wire_to_event)(
Display* /**//* display */,
XEvent* /**//* re */,
xEvent* /**//* event */
);
Status (*event_to_wire)(
Display* /**//* display */,
XEvent* /**//* re */,
xEvent* /**//* event */
);
int (*error)(
Display* /**//* display */,
xError* /**//* err */,
XExtCodes* /**//* codes */,
int* /**//* ret_code */
);
char *(*error_string)(
Display* /**//* display */,
int /**//* code */,
XExtCodes* /**//* codes */,
char* /**//* buffer */,
int /**//* nbytes */
);
} XExtensionHooks;
在上面这些函数中,close_display(关闭DISPLAY时被调用),wire_to_event(发现事件时被调用)和 event_to_wire(发出事件时被调用)三个函数使用最为频繁。
示例可以参考lib/Xext中的代码。
(待续)
相关文章推荐
- X Window研究笔记(22)
- X Window研究笔记(20)
- X Window研究笔记(21)
- X Window研究笔记(4)(转贴)
- X Window研究笔记(4)
- X Window研究笔记(5)
- X Window研究笔记(8)
- X Window研究笔记(10)
- X Window研究笔记(18)
- X Window研究笔记(22)
- X Window研究笔记(1)~22
- X Window研究笔记(21)
- X Window研究笔记(20)
- X Window研究笔记(21)
- X Window研究笔记(5)(转贴)
- X Window研究笔记--七大设计准则
- X Window研究笔记(2)
- X Window研究笔记(5)
- X Window研究笔记(8)
- X Window研究笔记(9)