#ifndef WH_INTERNAL_H_595eec86_ #define WH_INTERNAL_H_595eec86_ #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) typedef struct open_state OPEN_STATE; typedef struct str_list STR_LIST; 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 *); } ; 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 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_list { 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_list_init(STR_LIST *); extern int lx__str_list_push_printf(STR_LIST *, const char *, ...) __attribute__((__format__(__printf__,2,3))); extern void lx__str_list_flush(STR_LIST *); 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 r_int16 lx__r_int16 extern INT16 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 w_card32 lx__w_card32 extern void w_card32(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 void lx__send_req(LX_CONN *, const unsigned char *, int); extern void lx__send_req_free(LX_CONN *, unsigned char *, int); 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 *); #endif