Store monitor size and depth in the generic structure.
Merged monitor driver into USER driver.

diff --git a/include/desktop.h b/include/desktop.h
index 7d75ac0..9e130ab 100644
--- a/include/desktop.h
+++ b/include/desktop.h
@@ -9,22 +9,14 @@
 
 #include "windef.h"
 
-struct tagMONITOR;
-
 typedef struct tagDESKTOP
 {
   HBRUSH                hbrushPattern;
   HBITMAP               hbitmapWallPaper;
   SIZE                  bitmapSize;
   BOOL                  fTileWallPaper;
-  struct tagMONITOR    *pPrimaryMonitor;
 } DESKTOP;
 
-extern BOOL DESKTOP_IsSingleWindow(void);
-extern int DESKTOP_GetScreenWidth(void);
-extern int DESKTOP_GetScreenHeight(void);
-extern int DESKTOP_GetScreenDepth(void);
-
 extern BOOL DESKTOP_SetPattern( LPCSTR pattern );
 extern LRESULT WINAPI DesktopWndProc( HWND hwnd, UINT message,
                                       WPARAM wParam, LPARAM lParam );
diff --git a/include/monitor.h b/include/monitor.h
index 7947748..e7c95c5 100644
--- a/include/monitor.h
+++ b/include/monitor.h
@@ -8,38 +8,27 @@
 
 #include "windef.h"
 
-struct tagMONITOR_DRIVER;
-
 typedef struct tagMONITOR 
 {
-  void *pDriverData;
+    RECT rect;
+    int  depth;
 } MONITOR;
 
-typedef struct tagMONITOR_DRIVER {
-  void   (*pInitialize)(struct tagMONITOR *);
-  void   (*pFinalize)(struct tagMONITOR *);
-  BOOL   (*pIsSingleWindow)(struct tagMONITOR *);
-  int    (*pGetWidth)(struct tagMONITOR *);
-  int    (*pGetHeight)(struct tagMONITOR *);
-  int    (*pGetDepth)(struct tagMONITOR *);
-  BOOL   (*pGetScreenSaveActive)(struct tagMONITOR *);
-  void   (*pSetScreenSaveActive)(struct tagMONITOR *, BOOL);
-  int    (*pGetScreenSaveTimeout)(struct tagMONITOR *);
-  void   (*pSetScreenSaveTimeout)(struct tagMONITOR *, int);
-} MONITOR_DRIVER;
-
-extern MONITOR_DRIVER *MONITOR_Driver;
-
 extern MONITOR MONITOR_PrimaryMonitor;
 
-extern BOOL MONITOR_IsSingleWindow(MONITOR *pMonitor);
-extern int MONITOR_GetWidth(MONITOR *pMonitor);
-extern int MONITOR_GetHeight(MONITOR *pMonitor);
-extern int MONITOR_GetDepth(MONITOR *pMonitor);
-extern BOOL MONITOR_GetScreenSaveActive(MONITOR *pMonitor);
-extern void MONITOR_SetScreenSaveActive(MONITOR *pMonitor, BOOL bActivate);
-extern int MONITOR_GetScreenSaveTimeout(MONITOR *pMonitor);
-extern void MONITOR_SetScreenSaveTimeout(MONITOR *pMonitor, int nTimeout);
+static int inline MONITOR_GetWidth(MONITOR *pMonitor)
+{
+    return pMonitor->rect.right - pMonitor->rect.left;
+}
+
+static int inline MONITOR_GetHeight(MONITOR *pMonitor)
+{
+    return pMonitor->rect.bottom - pMonitor->rect.top;
+}
+
+static int inline MONITOR_GetDepth(MONITOR *pMonitor)
+{
+    return pMonitor->depth;
+}
 
 #endif /* __WINE_MONITOR_H */
-
diff --git a/include/ttydrv.h b/include/ttydrv.h
index 4a56d76..cbe9788 100644
--- a/include/ttydrv.h
+++ b/include/ttydrv.h
@@ -114,6 +114,22 @@
  * TTY USER driver
  */
 
+extern int cell_width;
+extern int cell_height;
+static inline int TTYDRV_GetCellWidth(void)  { return cell_width; }
+static inline int TTYDRV_GetCellHeight(void) { return cell_height; }
+
+#ifdef HAVE_LIBCURSES
+extern WINDOW *root_window;
+static inline WINDOW *TTYDRV_GetRootWindow(void) { return root_window; }
+#endif /* defined(HAVE_LIBCURSES) */
+
+extern BOOL TTYDRV_GetScreenSaveActive(void);
+extern void TTYDRV_SetScreenSaveActive(BOOL bActivate);
+extern int TTYDRV_GetScreenSaveTimeout(void);
+extern void TTYDRV_SetScreenSaveTimeout(int nTimeout);
+extern BOOL TTYDRV_IsSingleWindow(void);
+
 /* TTY clipboard driver */
 
 extern struct tagCLIPBOARD_DRIVER TTYDRV_CLIPBOARD_Driver;
@@ -154,41 +170,6 @@
 extern void TTYDRV_KEYBOARD_GetKeyboardConfig(struct tagKEYBOARD_CONFIG *cfg);
 extern void TTYDRV_KEYBOARD_SetKeyboardConfig(struct tagKEYBOARD_CONFIG *cfg, DWORD mask);
 
-/* TTY monitor driver */
-
-extern struct tagMONITOR_DRIVER TTYDRV_MONITOR_Driver;
-
-typedef struct tagTTYDRV_MONITOR_DATA {
-#ifdef HAVE_LIBCURSES
-  WINDOW  *rootWindow;
-#endif /* defined(HAVE_LIBCURSES) */
-  int      cellWidth;
-  int      cellHeight;
-  int      width;
-  int      height;
-  int      depth;
-} TTYDRV_MONITOR_DATA;
-
-struct tagMONITOR;
-
-#ifdef HAVE_LIBCURSES
-extern WINDOW *TTYDRV_MONITOR_GetCursesRootWindow(struct tagMONITOR *pMonitor);
-#endif /* defined(HAVE_LIBCURSES) */
-
-extern INT TTYDRV_MONITOR_GetCellWidth(struct tagMONITOR *pMonitor);
-extern INT TTYDRV_MONITOR_GetCellHeight(struct tagMONITOR *pMonitor);
-
-extern void TTYDRV_MONITOR_Initialize(struct tagMONITOR *pMonitor);
-extern void  TTYDRV_MONITOR_Finalize(struct tagMONITOR *pMonitor);
-extern BOOL TTYDRV_MONITOR_IsSingleWindow(struct tagMONITOR *pMonitor);
-extern int TTYDRV_MONITOR_GetWidth(struct tagMONITOR *pMonitor);
-extern int TTYDRV_MONITOR_GetHeight(struct tagMONITOR *pMonitor);
-extern int TTYDRV_MONITOR_GetDepth(struct tagMONITOR *pMonitor);
-extern BOOL TTYDRV_MONITOR_GetScreenSaveActive(struct tagMONITOR *pMonitor);
-extern void TTYDRV_MONITOR_SetScreenSaveActive(struct tagMONITOR *pMonitor, BOOL bActivate);
-extern int TTYDRV_MONITOR_GetScreenSaveTimeout(struct tagMONITOR *pMonitor);
-extern void TTYDRV_MONITOR_SetScreenSaveTimeout(struct tagMONITOR *pMonitor, int nTimeout);
-
 /* TTY mouse driver */
 
 extern void TTYDRV_MOUSE_Init();
@@ -210,7 +191,6 @@
 
 #ifdef HAVE_LIBCURSES
 WINDOW *TTYDRV_WND_GetCursesWindow(struct tagWND *wndPtr);
-WINDOW *TTYDRV_WND_GetCursesRootWindow(struct tagWND *wndPtr);
 #endif /* defined(HAVE_LIBCURSES) */
 
 extern void TTYDRV_WND_Initialize(struct tagWND *wndPtr);
diff --git a/include/user.h b/include/user.h
index 74af41d..741428a 100644
--- a/include/user.h
+++ b/include/user.h
@@ -60,6 +60,13 @@
     void   (*pSetCursor)(struct tagCURSORICONINFO *);
     void   (*pMoveCursor)(WORD, WORD);
     LONG   (*pEnableWarpPointer)(BOOL);
+    /* screen saver functions */
+    BOOL   (*pGetScreenSaveActive)(void);
+    void   (*pSetScreenSaveActive)(BOOL);
+    int    (*pGetScreenSaveTimeout)(void);
+    void   (*pSetScreenSaveTimeout)(int);
+    /* windowing functions */
+    BOOL   (*pIsSingleWindow)(void);
 } USER_DRIVER;
 
 extern USER_DRIVER *USER_Driver;
diff --git a/include/x11drv.h b/include/x11drv.h
index 5a0a1a7..e155659 100644
--- a/include/x11drv.h
+++ b/include/x11drv.h
@@ -321,6 +321,12 @@
 static inline Window X11DRV_GetXRootWindow(void) { return root_window; }
 static inline int X11DRV_GetDepth(void)          { return screen_depth; }
 
+extern BOOL X11DRV_GetScreenSaveActive(void);
+extern void X11DRV_SetScreenSaveActive(BOOL bActivate);
+extern int X11DRV_GetScreenSaveTimeout(void);
+extern void X11DRV_SetScreenSaveTimeout(int nTimeout);
+extern BOOL X11DRV_IsSingleWindow(void);
+
 /* X11 clipboard driver */
 
 extern struct tagCLIPBOARD_DRIVER X11DRV_CLIPBOARD_Driver;
@@ -378,28 +384,6 @@
 
 extern void X11DRV_KEYBOARD_HandleEvent(struct tagWND *pWnd, XKeyEvent *event);
 
-/* X11 monitor driver */
-
-extern struct tagMONITOR_DRIVER X11DRV_MONITOR_Driver;
-
-typedef struct _X11DRV_MONITOR_DATA {
-  int      width;
-  int      height;
-} X11DRV_MONITOR_DATA;
-
-struct tagMONITOR;
-
-extern void X11DRV_MONITOR_Initialize(struct tagMONITOR *pMonitor);
-extern void X11DRV_MONITOR_Finalize(struct tagMONITOR *pMonitor);
-extern BOOL X11DRV_MONITOR_IsSingleWindow(struct tagMONITOR *pMonitor);
-extern int X11DRV_MONITOR_GetWidth(struct tagMONITOR *pMonitor);
-extern int X11DRV_MONITOR_GetHeight(struct tagMONITOR *pMonitor);
-extern int X11DRV_MONITOR_GetDepth(struct tagMONITOR *pMonitor);
-extern BOOL X11DRV_MONITOR_GetScreenSaveActive(struct tagMONITOR *pMonitor);
-extern void X11DRV_MONITOR_SetScreenSaveActive(struct tagMONITOR *pMonitor, BOOL bActivate);
-extern int X11DRV_MONITOR_GetScreenSaveTimeout(struct tagMONITOR *pMonitor);
-extern void X11DRV_MONITOR_SetScreenSaveTimeout(struct tagMONITOR *pMonitor, int nTimeout);
-
 /* X11 mouse driver */
 
 extern void X11DRV_MOUSE_Init();