typedef struct Cursor Cursor;
typedef struct Cursorinfo Cursorinfo;
struct Cursorinfo {
	Cursor	c;
	Lock		lk;
};

/* devmouse.c */
extern void pm_mousetrack(Point, int, int);
extern Point pm_mousexy(void);

extern Cursorinfo pm_cursor;

/* mouse.c */
extern void pm_mousectl(Cmdbuf*);

/* screen.c */
extern void	pm_flushmemscreen(Rectangle);
extern int	pm_screensize(int, int, int, ulong);
extern int	pm_screenaperture(int, int);
extern Rectangle pm_physgscreenr;	/* actual monitor size */
extern int	pm_cursormove(Point);
extern void	pm_screeninit(void);
extern void pm_movemouse(Point);

/* portscreen.c */
extern Memimage*	pm_gscreen;
extern void pm_cursorload(Cursor*);
extern Cursor	pm_arrow;
extern int	pm_setcolor(ulong, ulong, ulong, ulong);
extern void	pm_getcolor(ulong, ulong*, ulong*, ulong*);
extern Memimage*	pm_attachscreen(int*);
extern void	pm_detachscreen(Memimage*);
extern Memimage*	pm_reattachscreen(Memimage*, int*);
extern void	pm_drawconsinit(void);

/* devdraw.c */
extern void	pm_deletescreenimage(void);
extern void	pm_resizescreenimage(void);
extern int		pm_drawhasclients(void);
extern ulong	pm_blanktime;
extern void	pm_setscreenimageclipr(Rectangle);
extern void	pm_drawactive(int);
extern void	pm_drawblankscreen(int);

extern int		pm_hasresized;

#ifndef NODEFINE
#undef  drawactive
#define drawactive			pm_drawactive
#undef  mousetrack
#define mousetrack			pm_mousetrack
#undef  mousexy
#define mousexy			pm_mousexy
#undef  arrow
#define arrow			pm_arrow
#undef  mousectl
#define mousectl			pm_mousectl
#undef  cursor
#define cursor			pm_cursor
#undef  flushmemscreen
#define flushmemscreen			pm_flushmemscreen
#undef  screensize
#define screensize			pm_screensize
#undef  screenaperture
#define screenaperture			pm_screenaperture
#undef  physgscreenr
#define physgscreenr			pm_physgscreenr
#undef  cursormove
#define cursormove			pm_cursormove
#undef  gscreen
#define gscreen			pm_gscreen
#undef  cursorload
#define cursorload			pm_cursorload
#undef  setcolor
#define setcolor			pm_setcolor
#undef  getcolor
#define getcolor			pm_getcolor
#undef  attachscreen
#define attachscreen			pm_attachscreen
#undef  detachscreen
#define detachscreen			pm_detachscreen
#undef  reattachscreen
#define reattachscreen			pm_reattachscreen
#undef  drawconsinit
#define drawconsinit			pm_drawconsinit
#undef  hasresized
#define hasresized			pm_hasresized

#undef  deletescreenimage
#define deletescreenimage			pm_deletescreenimage
#undef  resizescreenimage
#define resizescreenimage			pm_resizescreenimage
#undef  drawhasclients
#define drawhasclients			pm_drawhasclients
#undef  blanktime
#define blanktime			pm_blanktime
#undef  setscreenimageclipr
#define setscreenimageclipr			pm_setscreenimageclipr
#undef  drawblankscreen
#define drawblankscreen			pm_drawblankscreen

#endif
