#ifndef WH_INTERNAL_H_7300fcbe_ #define WH_INTERNAL_H_7300fcbe_ #include #include "lx.h" typedef unsigned int CARD32; typedef unsigned short int CARD16; typedef unsigned char CARD8; typedef signed short int INT16; typedef enum { BS_NEVER = 1, BS_WHENMAPPED, BS_ALWAYS, } BACKINGSTORE; typedef unsigned char VISUALCLASS; #define VC_StaticGray 0 #define VC_GrayScale 1 #define VC_StaticColor 2 #define VC_PseudoColor 3 #define VC_TrueColor 4 #define VC_DirectColor 5 #define VC__MUTABLE(vc) ((vc)&1) // Event state #define EVS_KEYBUTMASK_MBZ 0xe000 #define EVS_KEYMASK_MBZ 0xff00 // Event mask #define EVM_EVENT_MBZ 0xfe000000 #define EVM_POINTEREVENT_MBZ 0xffff8003 #define EVM_DEVICEEVENT_MBZ 0xffffc0b0 typedef struct open_state OPEN_STATE; typedef struct str_tconc STR_TCONC; typedef struct str_entry STR_ENTRY; typedef struct pmformat PMFORMAT; typedef struct screen SCREEN; typedef struct screendepth SCREENDEPTH; typedef struct visualtype VISUALTYPE; struct lx_conn { unsigned int flags; #define XCF_FAIL 0x00000001 #define XCF_OWN_LOOP 0x00000002 #define XCF_OPENING 0x00000004 #define XCF_DEBUG 0x00000008 #define XCF_BREAK 0x00000010 int fd; int sno; AIO_LOOP *io; AIO_OQ oq; int pid; unsigned int proto_major; unsigned int proto_minor; unsigned int release; unsigned int resource_base; unsigned int resource_mask; unsigned int resource_val; unsigned int resource_inc; unsigned int motion_size; int vendor_len; char *vendor; unsigned int max_request; int nscreens; int nformats; LX_IMAGE_BYTE_ORDER ibo; LX_BITMAP_BIT_ORDER bbo; int scanline_unit; int scanline_pad; int keycode_min; int keycode_max; PMFORMAT *pmformats; SCREEN *screens; int (*gotdata)(LX_CONN *, const void *, int); OPEN_STATE *os; CARD32 next_serial; LX_OP *pendingf; LX_OP *pendingb; char *text; unsigned char *rb; int rba; int rbl; int rbw; void *udata; LX_X_ERR_ACTION (*x_err)(LX_CONN *, const LX_X_ERR *); void (*lib_err)(LX_CONN *, const LX_LIB_ERR *); void (*event)(LX_CONN *, LX_EVENT *); LX_EVENT evbuf; } ; typedef enum { LXS_USER = 1, } LX_OP_STATE; struct lx_op { LX_CONN *conn; LX_OP *flink; LX_OP *blink; CARD32 serial; int extra; void (*usercb)(void *); void *usercbarg; void (*done)(LX_OP *, const unsigned char *); void *reqpriv; unsigned int flags; #define LXOF_DONE 0x00000001 #define LXOF_MORE 0x00000002 #define LXOF_DROP 0x00000004 #define LXOF_KEEP 0x00000008 #define LXOF_LINK 0x00000010 void *udata; } ; struct lx_hostlist { int len; LX_HOSTTYPE *types; int *sizes; void **data; unsigned char *alldata; } ; struct lx_strlist { int len; int *lens; char **data; char *alldata; } ; struct lx_XIDlist { int len; LX_XID *ids; } ; struct pmformat { unsigned char depth; unsigned char bpp; unsigned char scanline_pad; } ; struct screen { LX_XID root; LX_XID cmap; CARD32 whitepixel; CARD32 blackpixel; CARD32 inputmasks; CARD16 w_pixels; CARD16 h_pixels; CARD16 w_mm; CARD16 h_mm; CARD16 min_maps; CARD16 max_maps; LX_XID rootvisual; BACKINGSTORE backingstore; int saveunders; CARD8 rootdepth; CARD8 ndepths; SCREENDEPTH *depths; } ; struct screendepth { CARD8 depth; CARD16 nvisuals; VISUALTYPE *visuals; } ; struct visualtype { LX_XID id; VISUALCLASS class; CARD8 bitsperrgb; CARD16 cmapentries; CARD32 rmask; CARD32 gmask; CARD32 bmask; } ; struct str_tconc { STR_ENTRY *head; STR_ENTRY **tail; } ; struct str_entry { STR_ENTRY *link; char *str; } ; struct open_state { LX_CONN *conn; unsigned int flags; #define OSF_NUMERIC_ADDR 0x00000001 #define OSF_NO_PREAMBLE 0x00000002 void (*err)(const LX_LIB_ERR *, void *); void (*done)(LX_CONN *, void *); void *cbarg; int dispno; struct addrinfo *ai0; struct addrinfo *ai; int fd; int pid; int bid; unsigned char *ihdata; int ihwant; int ihfill; char *text; char *failmsg; int multifail; } ; extern const LX_LIB_ERR lx__nomem_err; extern void lx__str_tconc_init(STR_TCONC *); extern int lx__str_tconc_push_printf(STR_TCONC *, const char *, ...) __attribute__((__format__(__printf__,2,3))); extern void lx__str_tconc_flush(STR_TCONC *); extern void lx__protoerr(LX_CONN *, const char *, ...) __attribute__((__format__(__printf__,2,3))); #define r_card16 lx__r_card16 extern CARD16 r_card16(const unsigned char *); #define w_card16 lx__w_card16 extern void w_card16(unsigned char *, CARD16); #define w_char2b lx__w_char2b extern void w_char2b(unsigned char *, unsigned int); #define r_int16 lx__r_int16 extern int r_int16(const unsigned char *); #define w_int16 lx__w_int16 extern void w_int16(unsigned char *, INT16); #define r_card32 lx__r_card32 extern CARD32 r_card32(const unsigned char *); #define r_int32 lx__r_int32 extern int r_int32(const unsigned char *); #define w_card32 lx__w_card32 extern void w_card32(unsigned char *, CARD32); #define w_int32 lx__w_int32 extern void w_int32(unsigned char *, int); #define w_card32be lx__w_card32be extern void w_card32be(unsigned char *, CARD32); /* * Mapping between protocol values and API values. */ extern int lx__wclass_to_proto(LX_WINDOW_CLASS); extern LX_WINDOW_CLASS lx__proto_to_wclass(unsigned int); extern int lx__backingstore_to_proto(LX_BACKINGSTORE); extern LX_BACKINGSTORE lx__proto_to_backingstore(unsigned int); extern int lx__bitgravity_to_proto(LX_GRAVITY); extern LX_GRAVITY lx__proto_to_bitgravity(unsigned int); extern int lx__wingravity_to_proto(LX_GRAVITY); extern LX_GRAVITY lx__proto_to_wingravity(unsigned int); extern int lx__gcfunction_to_proto(LX_GCFUNCTION); extern LX_GCFUNCTION lx__proto_to_gcfunction(unsigned int); extern int lx__gclinestyle_to_proto(LX_GCLINESTYLE); extern LX_GCLINESTYLE lx__proto_to_gclinestyle(unsigned int); extern int lx__gccapstyle_to_proto(LX_GCCAPSTYLE); extern LX_GCCAPSTYLE lx__proto_to_gccapstyle(unsigned int); extern int lx__gcjoinstyle_to_proto(LX_GCJOINSTYLE); extern LX_GCJOINSTYLE lx__proto_to_gcjoinstyle(unsigned int); extern int lx__gcfillstyle_to_proto(LX_GCFILLSTYLE); extern LX_GCFILLSTYLE lx__proto_to_gcfillstyle(unsigned int); extern int lx__gcfillrule_to_proto(LX_GCFILLRULE); extern LX_GCFILLRULE lx__proto_to_gcfillrule(unsigned int); extern int lx__gcsubwindowmode_to_proto(LX_GCSUBWINDOWMODE); extern LX_GCSUBWINDOWMODE lx__proto_to_gcsubwindowmode(unsigned int); extern int lx__gcarcmode_to_proto(LX_GCARCMODE); extern LX_GCARCMODE lx__proto_to_gcarcmode(unsigned int); extern int lx__coordmode_to_proto(LX_COORDMODE); extern int lx__boolean_to_proto(int); extern int lx__proto_to_boolean(unsigned int); extern int lx__forcescreensaver_to_proto(LX_FORCESCREENSAVER); extern int lx__closedownmode_to_proto(LX_CLOSEDOWNMODE); extern int lx__accesscontrol_to_proto(LX_ACCESSCONTROL); extern LX_ACCESSCONTROL lx__proto_to_accesscontrol(unsigned int); extern int lx__hosttype_to_proto(LX_HOSTTYPE); extern LX_HOSTTYPE lx__proto_to_hosttype(unsigned int); extern int lx__changehostsmode_to_proto(LX_CHANGEHOSTSMODE); extern int lx__ssblanking_to_proto(LX_SSBLANKING); extern LX_SSBLANKING lx__proto_to_ssblanking(unsigned int); extern int lx__ssexposures_to_proto(LX_SSEXPOSURES); extern LX_SSEXPOSURES lx__proto_to_ssexposures(unsigned int); extern int lx__keyboardcontrolledaction_to_proto(LX_KBCTLLEDACTION); extern int lx__keyboardcontrolrepeataction_to_proto(LX_KBCTLREPEATACTION); extern int lx__sizeclass_to_proto(LX_SIZECLASS); extern int lx__imageformat_to_proto(LX_IMAGEFORMAT); extern int lx__shapeclass_to_proto(LX_SHAPECLASS); extern int lx__rectorder_to_proto(LX_RECTORDER); extern LX_MAPSTATE lx__proto_to_mapstate(unsigned int); extern int lx__changesavesetmode_to_proto(LX_CHANGESAVESETMODE); extern int lx__stackmode_to_proto(LX_STACKMODE); extern int lx__circulate_to_proto(LX_CIRCULATE); extern int lx__propertymode_to_proto(LX_PROPERTYMODE); extern int lx__grabmode_to_proto(LX_GRABMODE); extern LX_GRABSTATUS lx__proto_to_grabstatus(unsigned int); extern int lx__allowmode_to_proto(LX_ALLOWMODE); extern LX_TEXTDIRECTION lx__proto_to_textdirection(unsigned int); extern LX_MOTIONDETAIL lx__proto_to_motiondetail(unsigned int); extern LX_ENTERLEAVEDETAIL lx__proto_to_enterleavedetail(unsigned int); extern LX_ENTERLEAVEMODE lx__proto_to_enterleavemode(unsigned int); extern LX_FOCUSDETAIL lx__proto_to_focusdetail(unsigned int); extern LX_FOCUSMODE lx__proto_to_focusmode(unsigned int); extern LX_VISIBILITYSTATE lx__proto_to_visibilitystate(unsigned int); extern LX_STACKMODE lx__proto_to_stackmode(unsigned int); extern LX_CIRCULATEPLACE lx__proto_to_circulateplace(unsigned int); extern LX_PROPERTYSTATE lx__proto_to_propertystate(unsigned int); extern LX_COLORMAPSTATE lx__proto_to_colormapstate(unsigned int); extern LX_MAPPINGREQUEST lx__proto_to_mappingrequest(unsigned int); extern void lx__send_req(LX_CONN *, const unsigned char *, int); extern void lx__send_req_free(LX_CONN *, unsigned char *, int); extern void lx__just_send(LX_CONN *, const unsigned char *, int); extern void lx__send_padding(LX_CONN *, unsigned int n); extern LX_OP *lx__expect_reply(LX_CONN *, const unsigned char *, int, void (*)(LX_OP *, const unsigned char *), void *, int); extern int lx__proto_pkt(LX_CONN *, const void *, int); extern void lx__proto_newpkt(LX_CONN *); extern LX_XID lx__new_resource_id(LX_CONN *); extern int lx__loop_once(LX_CONN *); extern void lx__teardown_xc(LX_CONN *); extern void lx__teardown_os(OPEN_STATE *); extern void lx__bad_call(LX_CONN *, const char *); extern void lx__nomem_fail(LX_CONN *); extern LX_X_ERR_ACTION lx__default_x_err(LX_CONN *, const LX_X_ERR *); extern void lx__default_lib_err(LX_CONN *, const LX_LIB_ERR *); extern void lx__simple_none(LX_CONN *, const char *, int); extern void lx__simple_single(LX_CONN *, LX_XID, const char *, int); extern void lx__grab_charinfo(LX_CHARINFO *, const unsigned char *); extern void lx__dumphex(const char *, const unsigned char *, int); extern void lx__process_event(LX_CONN *); #define LX__map_error 0x20000019 #endif