
#ifndef __PROTO_H__
#define __PROTO_H__

#define DEFAULTBUFFERSIZE     512

#define KEYEVENTSTOBUFFER     20
#define POINTEREVENTSTOBUFFER 100


typedef struct bufferedkey_s {
  CARD32 key;
  CARD8 down;
  int time;
} bufferedkey;

typedef struct bufferedptr_s {
  CARD16 x, y;
  CARD8 buttons;
  int time;
} bufferedptr;

struct vncserv_s {
  // the framebuffer we're serving
  void *framebuffer;
  CARD16 sizex, sizey;
  CARD8 sourcebpp;
  int bpl;
  char name[256];

  // password sutff
  int usepassword;
  char password[256], challenge[16];

  // io
  vncservio io;
  void *meta;

  // buffering
  char *buffer;
  int buffersize, bytesinbuffer;

  // user events
  bufferedkey keyevents[KEYEVENTSTOBUFFER];
  int keyeventcount;
  bufferedptr pointerevents[POINTEREVENTSTOBUFFER];
  int pointereventcount;

  // client stuff
  area box[1];
  area clientbox;
  area nextbox[1];

  int hextile_supported, copy_supported, hextiledithering_supported;

  void *pixtrans;
  int clientbpp;
  int state, statetimeout;
  int started;
  int sharedflag;
  int errorhasoccured;
  unsigned int pal8bpp[256];
};


#endif
