1
0
Fork 0
forked from fte/fteqw
fteqw/engine/qux/qux.h
Spoike 9ae7e2621d SOFTWARE RENDERING IS BROKEN: DO NOT USE ASM VERSION.
Lots of changes.
CSQC should be functional, but is still tied to debug builds. It WILL have some bugs still, hopefully I'll be able to clean them up better if people test it a bit.
Precompiled headers are working properly now. Compile times are now much quicker in msvc. This takes most of the files this commit.
Restructured how client commands work. They're buffered outside the network message, some multithreaded code is in. It needs a bit of testing before it's active.


git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@885 fc73d0e0-1445-4013-8a0c-d673dee63da5
2005-02-28 07:16:19 +00:00

170 lines
4 KiB
C

#ifdef _WIN32 //for multithreaded reading
#define BOOL WINDOWSSUCKS_BOOL
#define INT32 WINDOWSSUCKS_INT32
#include "winquake.h"
#undef BOOL
#undef INT32
#define MULTITHREADWIN32
#endif
#ifdef MULTITHREADWIN32
#define MULTITHREAD
#endif
#include "Xproto.h"
#include "x.h"
#include "bigreqstr.h"
#define XK_MISCELLANY
#define XK_LATIN1
#include "keysymdef.h"
typedef struct xclient_s {
int socket;
int inbufferlen;
int outbufferlen;
int inbuffermaxlen;
int outbuffermaxlen;
char *outbuffer;
char *inbuffer;
qboolean tobedropped; //dropped when no more to send.
qboolean stillinitialising;
unsigned int requestnum;
unsigned int ridbase;
struct xclient_s *nextclient;
#ifdef MULTITHREADWIN32
HANDLE threadhandle;
CRITICAL_SECTION delecatesection;
#endif
} xclient_t;
extern xclient_t *xgrabbedclient; //stops reading other clients
extern xclient_t *xpointergrabclient;
typedef struct xproperty_s {
Atom atomid;
Atom type;
int datalen;
struct xproperty_s *next;
int format;
char data[1];
} xproperty_t;
typedef struct xnotificationmask_s {
xclient_t *client;
unsigned int mask;
struct xnotificationmask_s *next;
} xnotificationmask_t;
typedef struct xresource_s {
enum {x_none, x_window, x_gcontext, x_pixmap, x_atom} restype;
int id;
xclient_t *owner;
struct xresource_s *next, *prev;
} xresource_t;
typedef struct xpixmap_s {
xresource_t res;
int references;
qboolean linked;
int width;
int height;
int depth;
qbyte *data;
} xpixmap_t;
typedef struct xatom_s {
xresource_t res;
char atomname[1];
int selectionownerwindowid;
xclient_t *selectionownerclient;
} xatom_t;
typedef struct xwindow_s {
xresource_t res;
int xpos;
int ypos;
int width;
int height;
char *buffer;
int bg;
struct xwindow_s *parent;
struct xwindow_s *child;
struct xwindow_s *sibling;
xpixmap_t *backpixmap;
unsigned int backpixel;
unsigned int borderpixel;
int bitgravity, wingravity;
unsigned int donotpropagate;
int colormap;
qboolean mapped;
qboolean overrideredirect;
qboolean inputonly;
int depth;
xproperty_t *properties;
xnotificationmask_t *notificationmask;
} xwindow_t;
typedef struct xgcontext_s
{
xresource_t res;
int depth;
int function;
int fgcolour;
int bgcolour;
} xgcontext_t;
extern xwindow_t *rootwindow;
extern qboolean xrefreshed; //something onscreen changed.
int XS_GetResource(int id, void **data);
void XS_SetProperty(xwindow_t *wnd, Atom atomid, Atom atomtype, char *data, int datalen, int format);
int XS_GetProperty(xwindow_t *wnd, Atom atomid, Atom *type, char *output, int maxlen, int offset, int *extrabytes, int *format);
void XS_DeleteProperty(xwindow_t *wnd, Atom atomid);
xatom_t *XS_CreateAtom(Atom atomid, char *name, xclient_t *owner);
Atom XS_FindAtom(char *name);
xgcontext_t *XS_CreateGContext(int id, xclient_t *owner, xresource_t *drawable);
int XS_NewResource(void);
xwindow_t *XS_CreateWindow(int wid, xclient_t *owner, xwindow_t *parent, short x, short y, short width, short height);
void XS_SetParent(xwindow_t *wnd, xwindow_t *parent);
xpixmap_t *XS_CreatePixmap(int id, xclient_t *owner, int width, int height, int depth);
void XS_CreateInitialResources(void);
void XS_DestroyResource(xresource_t *res);
void XS_DestroyResourcesOfClient(xclient_t *cl);
void XS_CheckResourceSentinals(void);
void XW_ExposeWindow(xwindow_t *root, int x, int y, int width, int height);
void XW_ClearArea(xwindow_t *wnd, int xp, int yp, int width, int height);
typedef void (*XRequest) (xclient_t *cl, xReq *request);
extern XRequest XRequests [256];
void X_SendData(xclient_t *cl, void *data, int datalen);
void X_SendNotification(xEvent *data);
int X_SendNotificationMasked(xEvent *data, xwindow_t *window, unsigned int mask);
qboolean X_NotifcationMaskPresent(xwindow_t *window, int mask, xclient_t *notfor);
void X_SendError(xclient_t *cl, int errorcode, int assocresource, int major, int minor);
void X_InitRequests(void);
void X_EvalutateCursorOwner(int movemode);
void X_EvalutateFocus(int movemode);
extern qbyte *xscreen;
extern short xscreenwidth;
extern short xscreenheight;