diff packages/services/gfx/mw/current/src/nanox/serv.h @ 208:e0c0827131d1 ecos

Merge from eCos master repository on 2002-05-20-20:11:54-BST
author jlarmour
date Mon, 20 May 2002 22:19:26 +0000
parents
children
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/packages/services/gfx/mw/current/src/nanox/serv.h
@@ -0,0 +1,505 @@
+#ifndef	_SERV_H
+#define	_SERV_H
+/*
+ * Copyright (c) 2000 Greg Haerr <greg@censoft.com>
+ * Copyright (c) 2000 Alex Holden <alex@linuxhacker.org>
+ * Copyright (c) 1991 David I. Bell
+ * Permission is granted to use, distribute, or modify this source,
+ * provided that this copyright notice remains intact.
+ *
+ * Private definitions for the graphics server.
+ * These definitions are not to be used by clients.
+ */
+
+#if defined(__ECOS) && !defined(_NO_SVR_MAPPING)
+//
+// Since eCos is a single task, multi-threaded environment, the
+// server and the client code share the same namespace.  This means
+// that server functions which are represented by dispatchers in
+// the client code need to have unique names, thus this remapping.
+//
+#define GrArcAngle              SVR_GrArcAngle
+#define GrArc                   SVR_GrArc
+#define GrArea                  SVR_GrArea
+#define GrBell                  SVR_GrBell
+#define GrBitmap                SVR_GrBitmap
+#define GrCheckNextEvent        SVR_GrCheckNextEvent
+#define GrClearWindow           SVR_GrClearWindow
+#define GrClose                 SVR_GrClose
+#define GrCloseWindow           SVR_GrCloseWindow
+#define GrCopyArea              SVR_GrCopyArea
+#define GrCopyGC                SVR_GrCopyGC
+#define GrCreateFont            SVR_GrCreateFont
+#define GrDestroyFont           SVR_GrDestroyFont
+#define GrDestroyGC             SVR_GrDestroyGC
+#define GrDestroyRegion         SVR_GrDestroyRegion
+#define GrDestroyWindow         SVR_GrDestroyWindow
+#define GrDrawImageBits         SVR_GrDrawImageBits
+#define GrDrawImageFromFile     SVR_GrDrawImageFromFile
+#define GrDrawImageToFit        SVR_GrDrawImageToFit
+#define GrEllipse               SVR_GrEllipse
+#define GrEmptyRegion           SVR_GrEmptyRegion
+#define GrEqualRegion           SVR_GrEqualRegion
+#define GrFillEllipse           SVR_GrFillEllipse
+#define GrFillPoly              SVR_GrFillPoly
+#define GrFillRect              SVR_GrFillRect
+#define GrFindColor             SVR_GrFindColor
+#define GrFreeImage             SVR_GrFreeImage
+#define GrGetFocus              SVR_GrGetFocus
+#define GrGetFontInfo           SVR_GrGetFontInfo
+#define GrGetGCInfo             SVR_GrGetGCInfo
+#define GrGetGCTextSize         SVR_GrGetGCTextSize
+#define GrGetImageInfo          SVR_GrGetImageInfo
+#define GrGetRegionBox          SVR_GrGetRegionBox
+#define GrGetScreenInfo         SVR_GrGetScreenInfo
+#define GrGetSelectionOwner     SVR_GrGetSelectionOwner
+#define GrGetSysColor           SVR_GrGetSysColor
+#define GrGetSystemPalette      SVR_GrGetSystemPalette
+#define GrGetWindowInfo         SVR_GrGetWindowInfo
+#define GrGetWMProperties       SVR_GrGetWMProperties
+#define GrInjectKeyboardEvent   SVR_GrInjectKeyboardEvent
+#define GrInjectPointerEvent    SVR_GrInjectPointerEvent
+#define GrIntersectRegion       SVR_GrIntersectRegion
+#define GrKillWindow            SVR_GrKillWindow
+#define GrLine                  SVR_GrLine
+#define GrLoadImageFromFile     SVR_GrLoadImageFromFile
+#define GrLowerWindow           SVR_GrLowerWindow
+#define GrMapWindow             SVR_GrMapWindow
+#define GrMoveCursor            SVR_GrMoveCursor
+#define GrMoveWindow            SVR_GrMoveWindow
+#define GrNewGC                 SVR_GrNewGC
+#define GrNewInputWindow        SVR_GrNewInputWindow
+#define GrNewPixmap             SVR_GrNewPixmap
+#define GrNewPolygonRegion      SVR_GrNewPolygonRegion
+#define GrNewRegion             SVR_GrNewRegion
+#define GrNewWindow             SVR_GrNewWindow
+#define GrOffsetRegion          SVR_GrOffsetRegion
+#define GrOpen                  SVR_GrOpen
+#define GrPeekEvent             SVR_GrPeekEvent
+#define GrPointInRegion         SVR_GrPointInRegion
+#define GrPoints                SVR_GrPoints
+#define GrPoint                 SVR_GrPoint
+#define GrPoly                  SVR_GrPoly
+#define GrRaiseWindow           SVR_GrRaiseWindow
+#define GrReadArea              SVR_GrReadArea
+#define GrRectInRegion          SVR_GrRectInRegion
+#define GrRect                  SVR_GrRect
+#define GrReparentWindow        SVR_GrReparentWindow
+#define GrRequestClientData     SVR_GrRequestClientData
+#define GrResizeWindow          SVR_GrResizeWindow
+#define GrSelectEvents          SVR_GrSelectEvents
+#define GrSendClientData        SVR_GrSendClientData
+#define GrSetBackgroundPixmap   SVR_GrSetBackgroundPixmap
+#define GrSetBorderColor        SVR_GrSetBorderColor
+#define GrSetCursor             SVR_GrSetCursor
+#define GrSetFocus              SVR_GrSetFocus
+#define GrSetFontAttr           SVR_GrSetFontAttr
+#define GrSetFontRotation       SVR_GrSetFontRotation
+#define GrSetFontSize           SVR_GrSetFontSize
+#define GrSetGCBackground       SVR_GrSetGCBackground
+#define GrSetGCFont             SVR_GrSetGCFont
+#define GrSetGCForeground       SVR_GrSetGCForeground
+#define GrSetGCMode             SVR_GrSetGCMode
+#define GrSetGCRegion           SVR_GrSetGCRegion
+#define GrSetGCUseBackground    SVR_GrSetGCUseBackground
+#define GrSetScreenSaverTimeout SVR_GrSetScreenSaverTimeout
+#define GrSetSelectionOwner     SVR_GrSetSelectionOwner
+#define GrSetSystemPalette      SVR_GrSetSystemPalette
+#define GrSetWMProperties       SVR_GrSetWMProperties
+#define GrSubtractRegion        SVR_GrSubtractRegion
+#define GrText                  SVR_GrText
+#define GrUnionRectWithRegion   SVR_GrUnionRectWithRegion
+#define GrUnionRegion           SVR_GrUnionRegion
+#define GrUnmapWindow           SVR_GrUnmapWindow
+#define GrXorRegion             SVR_GrXorRegion
+#define GrDelay	SVR_GrDelay
+#define GrSetGCClipOrigin	SVR_GrSetGCClipOrigin
+#define GrClearArea	SVR_GrClearArea
+#define GrNewCursor	SVR_GrNewCursor
+#define GrDestroyCursor	SVR_GrDestroyCursor
+#define GrSetWindowCursor	SVR_GrSetWindowCursor
+#define GrDrawImageFromBuffer	SVR_GrDrawImageFromBuffer
+#define GrLoadImageFromBuffer	SVR_GrLoadImageFromBuffer
+#define GrGetFontList	SVR_GrGetFontList
+#define GrFreeFontList	SVR_GrFreeFontList
+#define GrQueryTree	SVR_GrQueryTree
+#define GrCreateTimer	SVR_GrCreateTimer
+#define GrDestroyTimer	SVR_GrDestroyTimer
+#define GrSetPortraitMode	SVR_GrSetPortraitMode
+#endif
+
+#include "nano-X.h"
+#include "device.h"
+
+/*
+ * Drawing types.
+ */
+typedef	int	GR_DRAW_TYPE;
+
+#define	GR_DRAW_TYPE_NONE	0	/* none or error */
+#define	GR_DRAW_TYPE_WINDOW	1	/* windows */
+#define	GR_DRAW_TYPE_PIXMAP	2	/* pixmaps */
+
+#define	GR_MAX_MODE		MWMODE_MAX
+/*
+ * List of elements for events.
+ */
+typedef	struct gr_event_list GR_EVENT_LIST;
+struct gr_event_list {
+	GR_EVENT_LIST	*next;		/* next element in list */
+	GR_EVENT	event;		/* event */
+};
+
+/*
+ * Data structure to keep track of state of clients.
+ */
+typedef struct gr_client GR_CLIENT;
+struct gr_client {
+	int		id;		/* client id and socket descriptor */
+	GR_EVENT_LIST	*eventhead;	/* head of event chain (or NULL) */
+	GR_EVENT_LIST	*eventtail;	/* tail of event chain (or NULL) */
+	GR_CLIENT	*next;		/* the next client in the list */
+	GR_CLIENT	*prev;		/* the previous client in the list */
+	int		waiting_for_event; /* used to implement GrGetNextEvent*/
+	char		*shm_cmds;
+	int		shm_cmds_size;
+	int		shm_cmds_shmid;
+	unsigned long	processid;	/* client process id*/
+};
+
+/*
+ * Structure to remember clients associated with events.
+ */
+typedef	struct gr_event_client	GR_EVENT_CLIENT;
+struct gr_event_client	{
+	GR_EVENT_CLIENT	*next;		/* next interested client or NULL */
+	GR_EVENT_MASK	eventmask;	/* events client wants to see */
+	GR_CLIENT	*client;	/* client who is interested */
+};
+
+/*
+ * Structure to remember graphics contexts.
+ */
+typedef	struct gr_gc	GR_GC;
+struct gr_gc {
+	GR_GC_ID	id;		/* graphics context id */
+	int		mode;		/* drawing mode */
+	GR_REGION_ID	regionid;	/* current clipping region */
+ 	int             xoff;           /* X offset for the clip region */
+	int             yoff;           /* Y offset for the clip region */
+	GR_FONT_ID	fontid;		/* current font id*/
+	GR_COLOR	foreground;	/* foreground color */
+	GR_COLOR	background;	/* background color */
+	GR_BOOL		usebackground;	/* actually display the background */
+	GR_BOOL		changed;	/* graphics context has been changed */
+	GR_CLIENT 	*owner;		/* client that created it */
+	GR_GC		*next;		/* next graphics context */
+};
+
+/*
+ * Structure to remember regions.
+ */
+typedef struct gr_region	GR_REGION;
+struct gr_region {
+	MWCLIPREGION *	rgn;
+	GR_REGION_ID	id;
+	GR_CLIENT *	owner;		/* client that created it */
+	GR_REGION *	next;
+};
+ 
+/*
+ * Structure to remember fonts.
+ */
+typedef struct gr_font	GR_FONT;
+struct gr_font {
+	PMWFONT		pfont;		/* font*/
+	int		fontsize;	/* font size*/
+	GR_FONT_ID	id;		/* font id*/
+	GR_CLIENT *	owner;		/* client that created it */
+	GR_FONT *	next;		/* next font*/
+};
+
+/*
+ * Structure to remember images.
+ */
+typedef struct gr_image	GR_IMAGE;
+struct gr_image {
+	GR_IMAGE_ID	id;
+	GR_CLIENT *	owner;		/* client that created it */
+	GR_IMAGE *	next;
+};
+ 
+/*
+ * Cursor structure.
+ */
+typedef struct gr_cursor GR_CURSOR;
+struct gr_cursor {
+	GR_CURSOR_ID	id;		/* cursor id*/
+	GR_CLIENT	*owner;		/* client that created it*/
+	GR_CURSOR	*next;
+	MWCURSOR	cursor;		/* mwin engine cursor structure*/
+};
+
+/*
+ * Structure to remember selection owner and mime types it can produce.
+ */
+typedef struct {
+	GR_WINDOW_ID wid;
+	GR_CHAR *typelist;
+} GR_SELECTIONOWNER;
+
+
+/*
+ * Structure to remember timers.
+ */
+typedef struct gr_timer	GR_TIMER;
+struct gr_timer 
+{
+    GR_TIMER_ID    id;       /* This instances ID */
+    GR_CLIENT     *owner;    /* client that created it */
+    GR_WINDOW_ID   wid;
+    MWTIMER       *timer;    /* Device independent layer timer */
+    GR_TIMER      *next;
+};
+
+/*
+ * Drawable structure.  This structure must be the first
+ * elements in a GR_WINDOW or GR_PIXMAP, as GrPrepareWindow
+ * returns a GR_DRAWABLE.  This structure includes
+ * only those items that routines that use GrPrepareWindow
+ * might dereference, and must be included in windows or pixmaps.
+ */
+typedef struct gr_drawable {
+	GR_COORD	x;		/* x position (0)*/
+	GR_COORD	y;		/* y position (0)*/
+	GR_SIZE		width;		/* width */
+	GR_SIZE		height;		/* height */
+        struct _mwscreendevice *psd;    /* associated screen device */
+	GR_WINDOW_ID	id;		/* window/pixmap id */
+} GR_DRAWABLE;
+
+/*
+ * Window structure
+ * Note: first elements must match GR_DRAWABLE
+ */
+typedef struct gr_pixmap GR_PIXMAP;
+typedef struct gr_window GR_WINDOW;
+struct gr_window {
+	GR_COORD	x;		/* absolute x position */
+	GR_COORD	y;		/* absolute y position */
+	GR_SIZE		width;		/* width */
+	GR_SIZE		height;		/* height */
+        struct _mwscreendevice *psd;    /* associated screen device */
+	GR_WINDOW_ID	id;		/* window id */
+	/* end of GR_DRAWABLE common members*/
+
+	GR_WINDOW	*next;		/* next window in complete list */
+	GR_CLIENT	*owner;		/* client that created it */
+	GR_WINDOW	*parent;	/* parent window */
+	GR_WINDOW	*children;	/* first child window */
+	GR_WINDOW	*siblings;	/* next sibling window */
+	GR_SIZE		bordersize;	/* size of border */
+	GR_COLOR	bordercolor;	/* color of border */
+	GR_COLOR	background;	/* background color */
+	GR_PIXMAP	*bgpixmap;	/* background pixmap */
+	int		bgpixmapflags;	/* center, tile etc. */
+	GR_EVENT_MASK	nopropmask;	/* events not to be propagated */
+	GR_EVENT_CLIENT	*eventclients;	/* clients interested in events */
+	GR_CURSOR_ID	cursorid;	/* cursor for this window */
+	GR_BOOL		mapped;		/* TRUE if explicitly mapped */
+	GR_COUNT	unmapcount;	/* count of reasons not really mapped */
+	GR_BOOL		output;		/* TRUE if window can do output */
+	GR_WM_PROPS	props;		/* window properties*/
+	GR_CHAR		*title;		/* window title*/
+};
+
+/*
+ * Pixmap structure
+ * Note: first elements must match GR_DRAWABLE
+ */
+struct gr_pixmap {
+	GR_COORD	x;		/* x position (0)*/
+	GR_COORD	y;		/* y position (0)*/
+	GR_SIZE		width;		/* width */
+	GR_SIZE		height;		/* height */
+        struct _mwscreendevice *psd;    /* associated screen device */
+	GR_WINDOW_ID	id;		/* pixmap id */
+	/* end of GR_DRAWABLE common members*/
+
+	GR_PIXMAP	*next;		/* next pixmap in list */
+	GR_CLIENT	*owner;		/* client that created it */
+};
+
+/*
+ * Macros to obtain the client number from a resource id, and to
+ * produce the first resource id to be used for a client number.
+ * Client numbers must not be zero.  This allows for 255 clients.
+#define	GR_ID_CLIENT(n)	(((GR_ID) (n)) >> 24)
+#define	GR_ID_BASE(n)	(((GR_ID) (n)) << 24)
+ */
+
+/*
+ * Graphics server routines.
+ */
+int		GsInitialize(void);
+void		GsClose(int fd);
+void		GsSelect(GR_TIMEOUT timeout);
+void		GsTerminate(void);
+GR_TIMEOUT	GsGetTickCount(void);
+void		GsRedrawScreen(void);
+void		GsError(GR_ERROR code, GR_ID id);
+GR_BOOL		GsCheckMouseEvent(void);
+GR_BOOL		GsCheckKeyboardEvent(void);
+int		GsReadKeyboard(GR_CHAR *buf, int *modifiers);
+int		GsOpenKeyboard(void);
+void		GsGetButtonInfo(int *buttons);
+void		GsGetModifierInfo(int *modifiers);
+void		GsCloseKeyboard(void);
+void		GsExposeArea(GR_WINDOW *wp, GR_COORD rootx, GR_COORD rooty,
+			GR_SIZE width, GR_SIZE height, GR_WINDOW *stopwp);
+void		GsCheckCursor(void);
+void		GsWpSetFocus(GR_WINDOW *wp);
+void		GsWpDrawBackgroundPixmap(GR_WINDOW *wp, GR_PIXMAP *pm,
+			GR_COORD x, GR_COORD y, GR_SIZE width, GR_SIZE height);
+void		GsWpTileBackgroundPixmap(GR_WINDOW *wp, GR_PIXMAP *pm,
+			GR_COORD x, GR_COORD y, GR_SIZE width, GR_SIZE height);
+void		GsWpClearWindow(GR_WINDOW *wp, GR_COORD x, GR_COORD y,
+			GR_SIZE width, GR_SIZE height, GR_BOOL exposeflag);
+void		GsWpUnmapWindow(GR_WINDOW *wp, GR_BOOL temp_unmap);
+void		GsWpMapWindow(GR_WINDOW *wp, GR_BOOL temp);
+void		GsWpDestroyWindow(GR_WINDOW *wp);
+void		GsSetPortraitMode(int mode);
+void		GsSetPortraitModeFromXY(GR_COORD rootx, GR_COORD rooty);
+void		GsSetClipWindow(GR_WINDOW *wp, MWCLIPREGION *userregion,
+			int flags);
+void		GsHandleMouseStatus(GR_COORD newx, GR_COORD newy,
+			int newbuttons);
+void		GsFreePositionEvent(GR_CLIENT *client, GR_WINDOW_ID wid,
+			GR_WINDOW_ID subwid);
+void		GsDeliverButtonEvent(GR_EVENT_TYPE type, int buttons,
+			int changebuttons, int modifiers);
+void		GsDeliverMotionEvent(GR_EVENT_TYPE type, int buttons,
+			MWKEYMOD modifiers);
+void		GsDeliverKeyboardEvent(GR_WINDOW_ID wid, GR_EVENT_TYPE type,
+			GR_KEY keyvalue, GR_KEYMOD modifiers,
+			GR_SCANCODE scancode);
+void		GsDeliverExposureEvent(GR_WINDOW *wp, GR_COORD x, GR_COORD y,
+			GR_SIZE width, GR_SIZE height);
+void		GsFreeExposureEvent(GR_CLIENT *client, GR_WINDOW_ID wid,
+			GR_COORD x, GR_COORD y, GR_SIZE width, GR_SIZE height);
+void		GsDeliverUpdateEvent(GR_WINDOW *wp, GR_UPDATE_TYPE utype,
+			GR_COORD x, GR_COORD y, GR_SIZE width, GR_SIZE height);
+void		GsDeliverGeneralEvent(GR_WINDOW *wp, GR_EVENT_TYPE type,
+			GR_WINDOW *other);
+void		GsDeliverPortraitChangedEvent(void);
+void		GsDeliverScreenSaverEvent(GR_BOOL activate);
+void		GsDeliverClientDataReqEvent(GR_WINDOW_ID wid, GR_WINDOW_ID rid,
+			GR_SERIALNO serial, GR_MIMETYPE mimetype);
+void		GsDeliverClientDataEvent(GR_WINDOW_ID wid, GR_WINDOW_ID rid,
+			GR_SERIALNO serial, GR_LENGTH len, GR_LENGTH thislen,
+			void *data);
+void		GsDeliverSelectionChangedEvent(GR_WINDOW_ID old_owner,
+			GR_WINDOW_ID new_owner);
+void		GsDeliverTimerEvent(GR_CLIENT *client, GR_WINDOW_ID wid,
+			GR_TIMER_ID tid);
+void		GsCheckMouseWindow(void);
+void		GsCheckFocusWindow(void);
+GR_DRAW_TYPE	GsPrepareDrawing(GR_DRAW_ID id, GR_GC_ID gcid,
+			GR_DRAWABLE **retdp);
+GR_BOOL		GsCheckOverlap(GR_WINDOW *topwp, GR_WINDOW *botwp);
+GR_EVENT	*GsAllocEvent(GR_CLIENT *client);
+GR_WINDOW	*GsFindWindow(GR_WINDOW_ID id);
+GR_PIXMAP 	*GsFindPixmap(GR_WINDOW_ID id);
+GR_GC		*GsFindGC(GR_GC_ID gcid);
+GR_REGION	*GsFindRegion(GR_REGION_ID regionid);
+GR_FONT 	*GsFindFont(GR_FONT_ID fontid);
+GR_TIMER	*GsFindTimer(GR_TIMER_ID timer_id);
+GR_CURSOR 	*GsFindCursor(GR_CURSOR_ID cursorid);
+GR_WINDOW	*GsPrepareWindow(GR_WINDOW_ID wid);
+GR_WINDOW	*GsFindVisibleWindow(GR_COORD x, GR_COORD y);
+void		GsDrawBorder(GR_WINDOW *wp);
+int		GsCurrentVt(void);
+void		GsRedrawVt(int t);
+int		GsOpenSocket(void);
+void		GsCloseSocket(void);
+void		GsAcceptClient(void);
+void		GsAcceptClientFd(int i);
+int		GsPutCh(int fd, unsigned char c);
+GR_CLIENT	*GsFindClient(int fd);
+void		GsDestroyClientResources(GR_CLIENT * client);
+void		GsDropClient(int fd);
+int		GsRead(int fd, void *buf, int c);
+int		GsWrite(int fd, void *buf, int c);
+void		GsHandleClient(int fd);
+void		GsResetScreenSaver(void);
+void		GsActivateScreenSaver(void *arg);
+void		GrGetNextEventWrapperFinish(int);
+void            GsTimerCB(void *arg);
+
+/*
+ * External data definitions.
+ */
+extern	char *		curfunc;		/* current function name */
+extern	GR_WINDOW_ID	cachewindowid;		/* cached window id */
+extern  GR_WINDOW_ID    cachepixmapid;
+extern	GR_GC_ID	cachegcid;		/* cached graphics context id */
+extern	GR_GC		*cachegcp;		/* cached graphics context */
+extern	GR_GC		*listgcp;		/* list of all gc */
+extern	GR_REGION	*listregionp;		/* list of all regions */
+extern	GR_FONT		*listfontp;		/* list of all fonts */
+extern	GR_IMAGE	*listimagep;		/* list of all images */
+extern	GR_CURSOR	*listcursorp;		/* list of all cursors */
+extern	GR_CURSOR	*stdcursor;		/* root window cursor */
+extern	GR_GC		*curgcp;		/* current graphics context */
+extern	GR_WINDOW	*cachewp;		/* cached window pointer */
+extern  GR_PIXMAP       *cachepp;		/* cached pixmap pointer */
+extern	GR_WINDOW	*listwp;		/* list of all windows */
+extern	GR_PIXMAP	*listpp;		/* list of all pixmaps */
+extern	GR_WINDOW	*rootwp;		/* root window pointer */
+extern	GR_WINDOW	*clipwp;		/* window clipping is set for */
+extern	GR_WINDOW	*focuswp;		/* focus window for keyboard */
+extern	GR_WINDOW	*mousewp;		/* window mouse is currently in */
+extern	GR_WINDOW	*grabbuttonwp;		/* window grabbed by button */
+extern	GR_CURSOR	*curcursor;		/* currently enabled cursor */
+extern	GR_COORD	cursorx;		/* x position of cursor */
+extern	GR_COORD	cursory;		/* y position of cursor */
+extern	int		curbuttons;		/* current state of buttons */
+extern	GR_CLIENT	*curclient;		/* current client */
+extern	char		*current_shm_cmds;
+extern	int		current_shm_cmds_size;
+extern	GR_EVENT_LIST	*eventfree;		/* list of free events */
+extern	GR_BOOL		focusfixed;		/* TRUE if focus is fixed */
+extern	GR_SCREEN_INFO	sinfo;			/* screen information */
+extern	PMWFONT		stdfont;		/* default font*/
+extern	int		escape_quits;		/* terminate when pressing ESC*/
+extern	int		connectcount;		/* # of connections to server */
+extern	GR_TIMEOUT	screensaver_delay;	/* time before screensaver */
+						/* activates */
+extern  GR_TIMER_ID     cache_timer_id;         /* cached timer ID */
+extern  GR_TIMER        *cache_timer;           /* cached timer */
+extern  GR_TIMER        *list_timer;            /* list of all timers */
+
+extern	GR_BOOL		screensaver_active;	/* screensaver is active */
+extern	GR_SELECTIONOWNER selection_owner;	/* the selection owner */
+extern  int		autoportrait;		/* auto portrait mode switching*/
+
+/*
+ * The filename to use for the named socket. If we ever support multiple
+ * servers on one machine, the last digit will be that of the FB used for it.
+ */
+#define GR_NAMED_SOCKET "/tmp/.nano-X"
+#define GR_NUMB_SOCKET 79
+
+#if VTSWITCH
+/* temp framebuffer vt switch stuff at upper level
+ * this should be handled at the lower level, just like vgalib does.
+ */
+void MwInitVt(void);
+int  MwCurrentVt(void);
+int  MwCheckVtChange(void);
+void MwRedrawVt(int t);
+void MwExitVt(void);
+extern int mwvterm;
+#endif /* VTSWITCH*/
+
+#endif /* _SERV_H*/