static XExtDisplayInfo *_xgeFindDisplay(Display *dpy) { XExtDisplayInfo *dpyinfo; if (!xge_info) { if (!(xge_info = XextCreateExtension())) return NULL; } if (!(dpyinfo = XextFindDisplay (xge_info, dpy))) { dpyinfo = XextAddDisplay (xge_info, dpy, xge_extension_name, &xge_extension_hooks, 0 /* no events, see below */, NULL); /* We don't use an extension opcode, so we have to set the handlers * directly. If GenericEvent would be > 64, the job would be done by * XExtAddDisplay */ XESetWireToEvent (dpy, GenericEvent, xge_extension_hooks.wire_to_event); XESetEventToWire (dpy, GenericEvent, xge_extension_hooks.event_to_wire); } return dpyinfo; }
static XExtDisplayInfo *_xgeFindDisplay(Display *dpy) { XExtDisplayInfo *dpyinfo; if (!xge_info) { if (!(xge_info = XextCreateExtension())) return NULL; } if (!(dpyinfo = XextFindDisplay (xge_info, dpy))) { dpyinfo = XextAddDisplay (xge_info, dpy, xge_extension_name, &xge_extension_hooks, 0 /* no events, see below */, NULL); /* dpyinfo->codes is only null if the server claims not to suppport XGE. Don't set up the hooks then, so that an XGE event from the server doesn't crash our client */ if (dpyinfo && dpyinfo->codes) { /* We don't use an extension opcode, so we have to set the handlers * directly. If GenericEvent would be > 64, the job would be done by * XExtAddDisplay */ XESetWireToEvent (dpy, GenericEvent, xge_extension_hooks.wire_to_event); XESetEventToWire (dpy, GenericEvent, xge_extension_hooks.event_to_wire); } } return dpyinfo; }