// Copyright status: this file is in the public domain. #include #include "lx.h" #include "proto.h" #include "internal.h" void lx_SendEvent(LX_CONN *xc, LX_XID dest, int propagate, unsigned int mask, const LX_EVENT *ev) { unsigned char req[44]; if ((xc->flags & XCF_FAIL) || (mask & EVM_EVENT_MBZ)) { lx__bad_call(xc,"lx_SendEvent"); return; } lx__nochain(xc); req[0] = XP_REQ_SendEvent; req[1] = lx__boolean_to_proto(propagate); w_card16(&req[2],11); switch (dest) { case LX_WINDOW_PointerWindow: dest = 0; break; case LX_WINDOW_InputFocus: dest = 1; break; } w_card32(req+4,dest); w_card16(req+8,mask); if (lx__serialize_event(req+12,ev) < 0) { lx__bad_call(xc,"lx_SendEvent"); return; } lx__send_req_free(xc,req,-1); }