#define NEED_EVENTS
#define NEED_REPLIES
#include <X11/Xlibint.h>
#include <X11/extensions/Xevie.h>
#include <X11/extensions/Xeviestr.h>
#include <X11/extensions/Xext.h>
#include <X11/extensions/extutil.h>
static XExtensionInfo _xevie_info_data;
static XExtensionInfo *xevie_info = &_xevie_info_data;
static char *xevie_extension_name = XEVIENAME;
static int major_opcode = 0;
static long xevie_mask = 0;
static int close_display();
static XExtensionHooks xevie_extension_hooks = {
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
close_display,
NULL,
NULL,
NULL,
NULL,
};
static XEXT_GENERATE_FIND_DISPLAY (find_display, xevie_info,
xevie_extension_name,
&xevie_extension_hooks,
0, NULL)
static XEXT_GENERATE_CLOSE_DISPLAY (close_display, xevie_info)
Status
XevieQueryVersion(dpy, major_version_return, minor_version_return)
Display* dpy;
int* major_version_return;
int* minor_version_return;
{
XExtDisplayInfo *info = find_display (dpy);
xXevieQueryVersionReply rep;
xXevieQueryVersionReq *req;
XextCheckExtension(dpy, info, xevie_extension_name, False);
major_opcode = info->codes->major_opcode;
LockDisplay(dpy);
GetReq(XevieQueryVersion, req);
req->reqType = major_opcode;
req->xevieReqType = X_XevieQueryVersion;
req->client_major_version = XEVIE_MAJOR_VERSION;
req->client_minor_version = XEVIE_MINOR_VERSION;
if (!_XReply(dpy, (xReply *)&rep, 0, xTrue)) {
UnlockDisplay(dpy);
SyncHandle();
return False;
}
*major_version_return = rep.server_major_version;
*minor_version_return = rep.server_minor_version;
UnlockDisplay(dpy);
SyncHandle();
return True;
}
#ifndef TYP_RESERVED_ENTRIES
#define TYP_RESERVED_ENTRIES 20
#endif
Status
#if NeedFunctionPrototypes
XevieStart(
Display* dpy)
#else
XevieStart(dpy)
Display* dpy;
#endif
{
XExtDisplayInfo *info = find_display (dpy);
xXevieStartReply rep;
xXevieStartReq *req;
XextCheckExtension(dpy, info, xevie_extension_name, False);
major_opcode = info->codes->major_opcode;
LockDisplay(dpy);
GetReq(XevieStart, req);
req->reqType = major_opcode;
req->xevieReqType = X_XevieStart;
if (_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
}
UnlockDisplay(dpy);
SyncHandle();
return(rep.pad1);
}
Status
XevieEnd(dpy)
Display* dpy;
{
XExtDisplayInfo *info = find_display (dpy);
xXevieEndReply rep;
xXevieEndReq *req;
XextCheckExtension (dpy, info, xevie_extension_name, False);
LockDisplay(dpy);
GetReq(XevieEnd, req);
req->reqType = info->codes->major_opcode;
req->xevieReqType = X_XevieEnd;
if (_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
}
UnlockDisplay(dpy);
SyncHandle();
return True;
}
Status
XevieSendEvent(dpy, event, dataType)
Display* dpy;
XEvent* event;
char dataType;
{
xXevieSendReply rep;
xXevieSendReq *req;
LockDisplay(dpy);
GetReq(XevieSend, req);
req->reqType = major_opcode;
req->xevieReqType = X_XevieSend;
req->dataType = dataType;
_XEventToWire(dpy, event, &req->event);
if (_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
}
UnlockDisplay(dpy);
SyncHandle();
return True;
}
Status
XevieSelectInput(dpy, event_mask)
Display* dpy;
long event_mask;
{
xXevieSelectInputReply rep;
xXevieSelectInputReq *req;
LockDisplay(dpy);
GetReq(XevieSelectInput, req);
req->reqType = major_opcode;
req->xevieReqType = X_XevieSelectInput;
req->event_mask = event_mask;
xevie_mask = event_mask;
if (_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
}
UnlockDisplay(dpy);
SyncHandle();
return True;
}