diff --git a/controls/desktop.c b/controls/desktop.c index 78e2abe78b3..786921ff49a 100644 --- a/controls/desktop.c +++ b/controls/desktop.c @@ -16,9 +16,6 @@ #include "win.h" #include "wine/winuser16.h" -/**********************************************************************/ - -DESKTOP_DRIVER *DESKTOP_Driver = NULL; /*********************************************************************** * DESKTOP_IsSingleWindow diff --git a/dlls/dinput/dinput_main.c b/dlls/dinput/dinput_main.c index 32503f5d51a..524732899d5 100644 --- a/dlls/dinput/dinput_main.c +++ b/dlls/dinput/dinput_main.c @@ -43,7 +43,7 @@ #include "dinput.h" #include "display.h" #include "input.h" -#include "keyboard.h" +#include "user.h" #include "message.h" #include "mouse.h" #include "sysmetrics.h" @@ -782,7 +782,7 @@ static HRESULT WINAPI SysKeyboardAImpl_GetDeviceState( LPDIRECTINPUTDEVICE2A iface,DWORD len,LPVOID ptr ) { - return KEYBOARD_Driver->pGetDIState(len, ptr)?DI_OK:E_FAIL; + return USER_Driver->pGetDIState(len, ptr)?DI_OK:E_FAIL; } static HRESULT WINAPI SysKeyboardAImpl_GetDeviceData( @@ -797,7 +797,7 @@ static HRESULT WINAPI SysKeyboardAImpl_GetDeviceData( TRACE("(this=%p,%ld,%p,%p(%ld)),0x%08lx)\n", This,dodsize,dod,entries,entries?*entries:0,flags); - ret=KEYBOARD_Driver->pGetDIData( + ret=USER_Driver->pGetDIData( This->keystate, dodsize, dod, entries, flags)?DI_OK:E_FAIL; for (i=0;i<*entries;i++) { dod[i].dwTimeStamp = GetTickCount(); @@ -816,11 +816,11 @@ static HRESULT WINAPI SysKeyboardAImpl_Acquire(LPDIRECTINPUTDEVICE2A iface) KEYBOARD_CONFIG no_auto; /* Save the original config */ - KEYBOARD_Driver->pGetKeyboardConfig(&(This->initial_config)); + USER_Driver->pGetKeyboardConfig(&(This->initial_config)); /* Now, remove auto-repeat */ no_auto.auto_repeat = FALSE; - KEYBOARD_Driver->pSetKeyboardConfig(&no_auto, WINE_KEYBOARD_CONFIG_AUTO_REPEAT); + USER_Driver->pSetKeyboardConfig(&no_auto, WINE_KEYBOARD_CONFIG_AUTO_REPEAT); This->acquired = 1; } @@ -835,7 +835,7 @@ static HRESULT WINAPI SysKeyboardAImpl_Unacquire(LPDIRECTINPUTDEVICE2A iface) if (This->acquired == 1) { /* Restore the original configuration */ - KEYBOARD_Driver->pSetKeyboardConfig(&(This->initial_config), 0xFFFFFFFF); + USER_Driver->pSetKeyboardConfig(&(This->initial_config), 0xFFFFFFFF); This->acquired = 0; } else { ERR("Unacquiring a not-acquired device !!!\n"); diff --git a/dlls/display/display_main.c b/dlls/display/display_main.c index 4bc668ea4dd..d2cdeb314d1 100644 --- a/dlls/display/display_main.c +++ b/dlls/display/display_main.c @@ -9,10 +9,10 @@ #include "display.h" #include "mouse.h" #include "windef.h" -#include "message.h" +#include "user.h" #include "wine/winuser16.h" -DEFAULT_DEBUG_CHANNEL(cursor) +DEFAULT_DEBUG_CHANNEL(cursor); /*********************************************************************** * DISPLAY_Inquire (DISPLAY.101) @@ -30,7 +30,7 @@ WORD WINAPI DISPLAY_Inquire(LPCURSORINFO lpCursorInfo) */ VOID WINAPI DISPLAY_SetCursor( struct tagCURSORICONINFO *lpCursor ) { - MOUSE_Driver->pSetCursor(lpCursor); + USER_Driver->pSetCursor(lpCursor); } /*********************************************************************** @@ -38,7 +38,7 @@ VOID WINAPI DISPLAY_SetCursor( struct tagCURSORICONINFO *lpCursor ) */ VOID WINAPI DISPLAY_MoveCursor( WORD wAbsX, WORD wAbsY ) { - MOUSE_Driver->pMoveCursor(wAbsX, wAbsY); + USER_Driver->pMoveCursor(wAbsX, wAbsY); } /*********************************************************************** @@ -70,6 +70,6 @@ DWORD WINAPI DISPLAY_GetDriverResourceID( WORD wQueriedResID, LPSTR lpsResName ) */ VOID WINAPI UserRepaintDisable16( BOOL16 disable ) { - EVENT_Driver->pUserRepaintDisable( disable ); + USER_Driver->pUserRepaintDisable( disable ); } diff --git a/dlls/mouse/mouse_main.c b/dlls/mouse/mouse_main.c index ae0f0ed9e2e..ccfc08a34e1 100644 --- a/dlls/mouse/mouse_main.c +++ b/dlls/mouse/mouse_main.c @@ -13,18 +13,17 @@ #include "module.h" #include "mouse.h" #include "monitor.h" +#include "user.h" #include "windef.h" #include "wingdi.h" #include "winuser.h" #include "win.h" #include "wine/winbase16.h" -DEFAULT_DEBUG_CHANNEL(event) +DEFAULT_DEBUG_CHANNEL(event); /**********************************************************************/ -MOUSE_DRIVER *MOUSE_Driver = NULL; - static LPMOUSE_EVENT_PROC DefMouseEventProc = NULL; /*********************************************************************** @@ -57,10 +56,10 @@ VOID WINAPI MOUSE_Enable(LPMOUSE_EVENT_PROC lpMouseEventProc) /* Now initialize the mouse driver */ if (initDone == FALSE) - { - MOUSE_Driver->pInit(); + { + USER_Driver->pInitMouse(); initDone = TRUE; - } + } } static VOID WINAPI MOUSE_CallMouseEventProc( FARPROC16 proc, @@ -127,11 +126,11 @@ void MOUSE_SendEvent( DWORD mouseStatus, DWORD posX, DWORD posY, wme.hWnd = hWnd; wme.keyState = keyState; - MOUSE_Driver->pEnableWarpPointer(FALSE); + USER_Driver->pEnableWarpPointer(FALSE); /* To avoid deadlocks, we have to suspend all locks on windows structures before the program control is passed to the mouse driver */ iWndsLocks = WIN_SuspendWndsLock(); DefMouseEventProc( mouseStatus, posX, posY, 0, (DWORD)&wme ); WIN_RestoreWndsLock(iWndsLocks); - MOUSE_Driver->pEnableWarpPointer(TRUE); + USER_Driver->pEnableWarpPointer(TRUE); } diff --git a/dlls/ttydrv/ttydrv.spec b/dlls/ttydrv/ttydrv.spec index 1236a6998c5..96fd63eae30 100644 --- a/dlls/ttydrv/ttydrv.spec +++ b/dlls/ttydrv/ttydrv.spec @@ -1,3 +1,5 @@ name ttydrv type win32 init TTYDRV_Init + +import gdi32.dll diff --git a/dlls/ttydrv/ttydrv_main.c b/dlls/ttydrv/ttydrv_main.c index d2ab703aa47..aa65f14c90e 100644 --- a/dlls/ttydrv/ttydrv_main.c +++ b/dlls/ttydrv/ttydrv_main.c @@ -4,19 +4,68 @@ #include #include "winbase.h" +#include "clipboard.h" #include "gdi.h" -#include "user.h" +#include "message.h" +#include "monitor.h" +#include "mouse.h" #include "ttydrv.h" +#include "user.h" +#include "win.h" + +static USER_DRIVER user_driver = +{ + /* event functions */ + TTYDRV_EVENT_Synchronize, + TTYDRV_EVENT_CheckFocus, + TTYDRV_EVENT_UserRepaintDisable, + /* keyboard functions */ + TTYDRV_KEYBOARD_Init, + TTYDRV_KEYBOARD_VkKeyScan, + TTYDRV_KEYBOARD_MapVirtualKey, + TTYDRV_KEYBOARD_GetKeyNameText, + TTYDRV_KEYBOARD_ToAscii, + TTYDRV_KEYBOARD_GetBeepActive, + TTYDRV_KEYBOARD_SetBeepActive, + TTYDRV_KEYBOARD_Beep, + TTYDRV_KEYBOARD_GetDIState, + TTYDRV_KEYBOARD_GetDIData, + TTYDRV_KEYBOARD_GetKeyboardConfig, + TTYDRV_KEYBOARD_SetKeyboardConfig, + /* mouse functions */ + TTYDRV_MOUSE_Init, + TTYDRV_MOUSE_SetCursor, + TTYDRV_MOUSE_MoveCursor, + TTYDRV_MOUSE_EnableWarpPointer +}; + /*********************************************************************** * TTYDRV initialisation routine */ BOOL WINAPI TTYDRV_Init( HINSTANCE hinst, DWORD reason, LPVOID reserved ) { - if (reason == DLL_PROCESS_ATTACH) + switch(reason) { - GDI_Driver = &TTYDRV_GDI_Driver; - USER_Driver = &TTYDRV_USER_Driver; + case DLL_PROCESS_ATTACH: + USER_Driver = &user_driver; + CLIPBOARD_Driver = &TTYDRV_CLIPBOARD_Driver; + MONITOR_Driver = &TTYDRV_MONITOR_Driver; + WND_Driver = &TTYDRV_WND_Driver; + + TTYDRV_MONITOR_Initialize( &MONITOR_PrimaryMonitor ); + TTYDRV_GDI_Initialize(); + break; + + case DLL_PROCESS_DETACH: + TTYDRV_GDI_Finalize(); + TTYDRV_MONITOR_Finalize( &MONITOR_PrimaryMonitor ); + + USER_Driver = NULL; + CLIPBOARD_Driver = NULL; + MONITOR_Driver = NULL; + WND_Driver = NULL; + break; } return TRUE; } diff --git a/dlls/x11drv/x11drv.spec b/dlls/x11drv/x11drv.spec index e0c00a4ae34..a277fcc6b05 100644 --- a/dlls/x11drv/x11drv.spec +++ b/dlls/x11drv/x11drv.spec @@ -1,3 +1,5 @@ name x11drv type win32 init X11DRV_Init + +import gdi32.dll diff --git a/dlls/x11drv/x11drv_main.c b/dlls/x11drv/x11drv_main.c index d1986140fae..66b1500b057 100644 --- a/dlls/x11drv/x11drv_main.c +++ b/dlls/x11drv/x11drv_main.c @@ -1,22 +1,168 @@ /* * X11DRV initialization code + * + * Copyright 1998 Patrik Stridvall + * Copyright 2000 Alexandre Julliard */ + #include +#include +#include "ts_xlib.h" #include "winbase.h" + +#include "clipboard.h" +#include "debugtools.h" #include "gdi.h" +#include "monitor.h" +#include "options.h" #include "user.h" +#include "win.h" #include "x11drv.h" + +static USER_DRIVER user_driver = +{ + /* event functions */ + X11DRV_EVENT_Synchronize, + X11DRV_EVENT_CheckFocus, + X11DRV_EVENT_UserRepaintDisable, + /* keyboard functions */ + X11DRV_KEYBOARD_Init, + X11DRV_KEYBOARD_VkKeyScan, + X11DRV_KEYBOARD_MapVirtualKey, + X11DRV_KEYBOARD_GetKeyNameText, + X11DRV_KEYBOARD_ToAscii, + X11DRV_KEYBOARD_GetBeepActive, + X11DRV_KEYBOARD_SetBeepActive, + X11DRV_KEYBOARD_Beep, + X11DRV_KEYBOARD_GetDIState, + X11DRV_KEYBOARD_GetDIData, + X11DRV_KEYBOARD_GetKeyboardConfig, + X11DRV_KEYBOARD_SetKeyboardConfig, + /* mouse functions */ + X11DRV_MOUSE_Init, + X11DRV_MOUSE_SetCursor, + X11DRV_MOUSE_MoveCursor, + X11DRV_MOUSE_EnableWarpPointer +}; + +static XKeyboardState keyboard_state; + +Display *display; + +/*********************************************************************** + * error_handler + */ +static int error_handler(Display *display, XErrorEvent *error_evt) +{ + DebugBreak(); /* force an entry in the debugger */ + return 0; +} + + +/*********************************************************************** + * X11DRV process initialisation routine + */ +static void process_attach(void) +{ + USER_Driver = &user_driver; + CLIPBOARD_Driver = &X11DRV_CLIPBOARD_Driver; + MONITOR_Driver = &X11DRV_MONITOR_Driver; + WND_Driver = &X11DRV_WND_Driver; + + /* We need this before calling any Xlib function */ + InitializeCriticalSection( &X11DRV_CritSection ); + MakeCriticalSectionGlobal( &X11DRV_CritSection ); + + putenv("XKB_DISABLE="); /* Disable XKB extension if present. */ + + /* Open display */ + + if (!(display = TSXOpenDisplay( Options.display ))) + { + MESSAGE( "%s: Can't open display: %s\n", + argv0, Options.display ? Options.display : "(none specified)" ); + ExitProcess(1); + } + + /* tell the libX11 that we will do input method handling ourselves + * that keep libX11 from doing anything whith dead keys, allowing Wine + * to have total control over dead keys, that is this line allows + * them to work in Wine, even whith a libX11 including the dead key + * patches from Th.Quinot (http://Web.FdN.FR/~tquinot/dead-keys.en.html) + */ + TSXOpenIM(display,NULL,NULL,NULL); + + if (Options.synchronous) XSetErrorHandler( error_handler ); + if (Options.desktopGeometry && Options.managed) Options.managed = FALSE; + + /* initialize monitor */ + X11DRV_MONITOR_Initialize( &MONITOR_PrimaryMonitor ); + + /* initialize GDI */ + X11DRV_GDI_Initialize(); + + /* save keyboard setup */ + TSXGetKeyboardControl(display, &keyboard_state); + + /* initialize event handling */ + X11DRV_EVENT_Init(); +} + + +/*********************************************************************** + * X11DRV process termination routine + */ +static void process_detach(void) +{ + /* restore keyboard setup */ + XKeyboardControl keyboard_value; + + keyboard_value.key_click_percent = keyboard_state.key_click_percent; + keyboard_value.bell_percent = keyboard_state.bell_percent; + keyboard_value.bell_pitch = keyboard_state.bell_pitch; + keyboard_value.bell_duration = keyboard_state.bell_duration; + keyboard_value.auto_repeat_mode = keyboard_state.global_auto_repeat; + + XChangeKeyboardControl(display, KBKeyClickPercent | KBBellPercent | + KBBellPitch | KBBellDuration | KBAutoRepeatMode, &keyboard_value); + + /* cleanup GDI */ + X11DRV_GDI_Finalize(); + +#if 0 /* FIXME */ + + /* cleanup monitor */ + X11DRV_MONITOR_Finalize( &MONITOR_PrimaryMonitor ); + + /* close the display */ + XCloseDisplay( display ); + display = NULL; + + USER_Driver = NULL; + CLIPBOARD_Driver = NULL; + MONITOR_Driver = NULL; + WND_Driver = NULL; +#endif +} + + /*********************************************************************** * X11DRV initialisation routine */ BOOL WINAPI X11DRV_Init( HINSTANCE hinst, DWORD reason, LPVOID reserved ) { - if (reason == DLL_PROCESS_ATTACH) + static int process_count; + + switch(reason) { - GDI_Driver = &X11DRV_GDI_Driver; - USER_Driver = &X11DRV_USER_Driver; + case DLL_PROCESS_ATTACH: + if (!process_count++) process_attach(); + break; + case DLL_PROCESS_DETACH: + if (!--process_count) process_detach(); + break; } return TRUE; } diff --git a/graphics/ttydrv/init.c b/graphics/ttydrv/init.c index cdee93c02fb..8b1a0050bbd 100644 --- a/graphics/ttydrv/init.c +++ b/graphics/ttydrv/init.c @@ -112,12 +112,6 @@ static const DC_FUNCTIONS TTYDRV_DC_Driver = }; -GDI_DRIVER TTYDRV_GDI_Driver = -{ - TTYDRV_GDI_Initialize, - TTYDRV_GDI_Finalize -}; - BITMAP_DRIVER TTYDRV_BITMAP_Driver = { TTYDRV_BITMAP_SetDIBits, diff --git a/graphics/x11drv/init.c b/graphics/x11drv/init.c index 5e2da445998..778799d9c4e 100644 --- a/graphics/x11drv/init.c +++ b/graphics/x11drv/init.c @@ -126,12 +126,6 @@ static const DC_FUNCTIONS X11DRV_Funcs = NULL /* pWidenPath */ }; -GDI_DRIVER X11DRV_GDI_Driver = -{ - X11DRV_GDI_Initialize, - X11DRV_GDI_Finalize -}; - BITMAP_DRIVER X11DRV_BITMAP_Driver = { X11DRV_DIB_SetDIBits, diff --git a/include/desktop.h b/include/desktop.h index 9a81694abcb..7d75ac0b926 100644 --- a/include/desktop.h +++ b/include/desktop.h @@ -9,7 +9,6 @@ #include "windef.h" -struct tagDESKTOP_DRIVER; struct tagMONITOR; typedef struct tagDESKTOP @@ -18,18 +17,9 @@ typedef struct tagDESKTOP HBITMAP hbitmapWallPaper; SIZE bitmapSize; BOOL fTileWallPaper; - struct tagMONITOR *pPrimaryMonitor; - struct tagDESKTOP_DRIVER *pDriver; /* Desktop driver */ - void *pDriverData; /* Desktop driver data */ + struct tagMONITOR *pPrimaryMonitor; } DESKTOP; -typedef struct tagDESKTOP_DRIVER { - void (*pInitialize)(struct tagDESKTOP *pDesktop); - void (*pFinalize)(struct tagDESKTOP *pDesktop); -} DESKTOP_DRIVER; - -extern DESKTOP_DRIVER *DESKTOP_Driver; - extern BOOL DESKTOP_IsSingleWindow(void); extern int DESKTOP_GetScreenWidth(void); extern int DESKTOP_GetScreenHeight(void); diff --git a/include/keyboard.h b/include/keyboard.h index 189ded25e12..251806ac9fc 100644 --- a/include/keyboard.h +++ b/include/keyboard.h @@ -9,8 +9,6 @@ #include "windef.h" -struct DIDEVICEOBJECTDATA; - #include "pshpack1.h" typedef struct _KBINFO { @@ -31,28 +29,6 @@ VOID WINAPI KEYBOARD_Disable(VOID); /* Wine internals */ -#define WINE_KEYBOARD_CONFIG_AUTO_REPEAT 0x00000001 -typedef struct tagKEYBOARD_CONFIG { - BOOL auto_repeat; -} KEYBOARD_CONFIG; - -typedef struct tagKEYBOARD_DRIVER { - void (*pInit)(void); - WORD (*pVkKeyScan)(CHAR); - UINT16 (*pMapVirtualKey)(UINT16, UINT16); - INT16 (*pGetKeyNameText)(LONG, LPSTR, INT16); - INT16 (*pToAscii)(UINT16, UINT16, LPBYTE, LPVOID, UINT16); - BOOL (*pGetBeepActive)(void); - void (*pSetBeepActive)(BOOL); - void (*pBeep)(void); - BOOL (*pGetDIState)(DWORD, LPVOID); - BOOL (*pGetDIData)(BYTE *, DWORD, struct DIDEVICEOBJECTDATA *, LPDWORD, DWORD); - void (*pGetKeyboardConfig)(KEYBOARD_CONFIG *); - void (*pSetKeyboardConfig)(KEYBOARD_CONFIG *, DWORD); -} KEYBOARD_DRIVER; - -extern KEYBOARD_DRIVER *KEYBOARD_Driver; - extern BOOL KEYBOARD_GetBeepActive(void); extern void KEYBOARD_SetBeepActive(BOOL bActivate); extern void KEYBOARD_Beep(void); diff --git a/include/message.h b/include/message.h index b4ff920bf52..9ac0a2de5b3 100644 --- a/include/message.h +++ b/include/message.h @@ -26,16 +26,6 @@ extern BOOL TIMER_GetTimerMsg( struct tagMSG *msg, HWND hwnd, HQUEUE16 hQueue, BOOL remove ); /* event.c */ -typedef struct tagEVENT_DRIVER { - BOOL (*pInit)(void); - void (*pSynchronize)(void); - BOOL (*pCheckFocus)(void); - void (*pUserRepaintDisable)(BOOL); -} EVENT_DRIVER; - -extern EVENT_DRIVER *EVENT_Driver; - -extern BOOL EVENT_Init( void ); extern void EVENT_Synchronize( void ); extern BOOL EVENT_CheckFocus( void ); diff --git a/include/monitor.h b/include/monitor.h index ec37bbf5854..7947748be6c 100644 --- a/include/monitor.h +++ b/include/monitor.h @@ -32,8 +32,6 @@ extern MONITOR_DRIVER *MONITOR_Driver; extern MONITOR MONITOR_PrimaryMonitor; -extern void MONITOR_Initialize(MONITOR *pMonitor); -extern void MONITOR_Finalize(MONITOR *pMonitor); extern BOOL MONITOR_IsSingleWindow(MONITOR *pMonitor); extern int MONITOR_GetWidth(MONITOR *pMonitor); extern int MONITOR_GetHeight(MONITOR *pMonitor); diff --git a/include/mouse.h b/include/mouse.h index b692313f3d1..dfb20d3870b 100644 --- a/include/mouse.h +++ b/include/mouse.h @@ -34,15 +34,6 @@ VOID WINAPI MOUSE_Disable(VOID); /* Wine internals */ -typedef struct tagMOUSE_DRIVER { - VOID (*pInit)(VOID); - VOID (*pSetCursor)(struct tagCURSORICONINFO *); - VOID (*pMoveCursor)(WORD, WORD); - LONG (*pEnableWarpPointer)(BOOL); -} MOUSE_DRIVER; - -extern MOUSE_DRIVER *MOUSE_Driver; - #define WINE_MOUSEEVENT_MAGIC ( ('M'<<24)|('A'<<16)|('U'<<8)|'S' ) typedef struct _WINE_MOUSEEVENT { diff --git a/include/ttydrv.h b/include/ttydrv.h index 35a0f1adb78..4a56d763a38 100644 --- a/include/ttydrv.h +++ b/include/ttydrv.h @@ -114,11 +114,6 @@ extern BOOL TTYDRV_PALETTE_IsDark(int pixel); * TTY USER driver */ -extern struct tagUSER_DRIVER TTYDRV_USER_Driver; - -extern BOOL TTYDRV_USER_Initialize(void); -extern void TTYDRV_USER_Finalize(void); - /* TTY clipboard driver */ extern struct tagCLIPBOARD_DRIVER TTYDRV_CLIPBOARD_Driver; @@ -134,31 +129,18 @@ extern void TTYDRV_CLIPBOARD_ResetOwner(struct tagWND *pWnd, BOOL bFooBar); /* TTY desktop driver */ -extern struct tagDESKTOP_DRIVER TTYDRV_DESKTOP_Driver; - #ifdef HAVE_LIBCURSES extern WINDOW *TTYDRV_DESKTOP_GetCursesRootWindow(struct tagDESKTOP *pDesktop); #endif /* defined(HAVE_LIBCURSES) */ -extern void TTYDRV_DESKTOP_Initialize(struct tagDESKTOP *pDesktop); -extern void TTYDRV_DESKTOP_Finalize(struct tagDESKTOP *pDesktop); -extern int TTYDRV_DESKTOP_GetScreenWidth(struct tagDESKTOP *pDesktop); -extern int TTYDRV_DESKTOP_GetScreenHeight(struct tagDESKTOP *pDesktop); -extern int TTYDRV_DESKTOP_GetScreenDepth(struct tagDESKTOP *pDesktop); - /* TTY event driver */ -extern struct tagEVENT_DRIVER TTYDRV_EVENT_Driver; - -extern BOOL TTYDRV_EVENT_Init(void); extern void TTYDRV_EVENT_Synchronize(void); extern BOOL TTYDRV_EVENT_CheckFocus(void); extern void TTYDRV_EVENT_UserRepaintDisable(BOOL bDisable); /* TTY keyboard driver */ -extern struct tagKEYBOARD_DRIVER TTYDRV_KEYBOARD_Driver; - extern void TTYDRV_KEYBOARD_Init(void); extern WORD TTYDRV_KEYBOARD_VkKeyScan(CHAR cChar); extern UINT16 TTYDRV_KEYBOARD_MapVirtualKey(UINT16 wCode, UINT16 wMapType); @@ -209,8 +191,6 @@ extern void TTYDRV_MONITOR_SetScreenSaveTimeout(struct tagMONITOR *pMonitor, int /* TTY mouse driver */ -extern struct tagMOUSE_DRIVER TTYDRV_MOUSE_Driver; - extern void TTYDRV_MOUSE_Init(); extern void TTYDRV_MOUSE_SetCursor(struct tagCURSORICONINFO *lpCursor); extern void TTYDRV_MOUSE_MoveCursor(WORD wAbsX, WORD wAbsY); diff --git a/include/user.h b/include/user.h index cc175bb952b..74af41d4816 100644 --- a/include/user.h +++ b/include/user.h @@ -29,9 +29,37 @@ extern WORD USER_HeapSel; #define USUD_LOCALHEAP 0x0004 #define USUD_FIRSTCLASS 0x0005 +struct tagCURSORICONINFO; +struct DIDEVICEOBJECTDATA; + +#define WINE_KEYBOARD_CONFIG_AUTO_REPEAT 0x00000001 +typedef struct tagKEYBOARD_CONFIG { + BOOL auto_repeat; +} KEYBOARD_CONFIG; + typedef struct tagUSER_DRIVER { - BOOL (*pInitialize)(void); - void (*pFinalize)(void); + /* event functions */ + void (*pSynchronize)(void); + BOOL (*pCheckFocus)(void); + void (*pUserRepaintDisable)(BOOL); + /* keyboard functions */ + void (*pInitKeyboard)(void); + WORD (*pVkKeyScan)(CHAR); + UINT16 (*pMapVirtualKey)(UINT16, UINT16); + INT16 (*pGetKeyNameText)(LONG, LPSTR, INT16); + INT16 (*pToAscii)(UINT16, UINT16, LPBYTE, LPVOID, UINT16); + BOOL (*pGetBeepActive)(void); + void (*pSetBeepActive)(BOOL); + void (*pBeep)(void); + BOOL (*pGetDIState)(DWORD, LPVOID); + BOOL (*pGetDIData)(BYTE *, DWORD, struct DIDEVICEOBJECTDATA *, LPDWORD, DWORD); + void (*pGetKeyboardConfig)(KEYBOARD_CONFIG *); + void (*pSetKeyboardConfig)(KEYBOARD_CONFIG *, DWORD); + /* mouse functions */ + void (*pInitMouse)(void); + void (*pSetCursor)(struct tagCURSORICONINFO *); + void (*pMoveCursor)(WORD, WORD); + LONG (*pEnableWarpPointer)(BOOL); } USER_DRIVER; extern USER_DRIVER *USER_Driver; diff --git a/include/x11drv.h b/include/x11drv.h index 6d8067d24d7..595c44601f3 100644 --- a/include/x11drv.h +++ b/include/x11drv.h @@ -275,8 +275,6 @@ extern void X11DRV_DIB_DeleteDIBSection(struct tagBITMAPOBJ *bmp); * X11 GDI driver */ -extern struct tagGDI_DRIVER X11DRV_GDI_Driver; - BOOL X11DRV_GDI_Initialize(void); void X11DRV_GDI_Finalize(void); @@ -312,15 +310,10 @@ extern BOOL X11DRV_PALETTE_IsDark(int pixel); * X11 USER driver */ -extern struct tagUSER_DRIVER X11DRV_USER_Driver; - extern Display *display; extern Screen *X11DRV_GetXScreen(void); extern Window X11DRV_GetXRootWindow(void); -extern BOOL X11DRV_USER_Initialize(void); -extern void X11DRV_USER_Finalize(void); - /* X11 clipboard driver */ extern struct tagCLIPBOARD_DRIVER X11DRV_CLIPBOARD_Driver; @@ -343,27 +336,13 @@ extern void X11DRV_CLIPBOARD_ReleaseSelection(Atom selType, Window w, HWND hwnd) /* X11 desktop driver */ -extern struct tagDESKTOP_DRIVER X11DRV_DESKTOP_Driver; - -typedef struct _X11DRV_DESKTOP_DATA { - int dummy; -} X11DRV_DESKTOP_DATA; - struct tagDESKTOP; extern Screen *X11DRV_DESKTOP_GetXScreen(struct tagDESKTOP *pDesktop); extern Window X11DRV_DESKTOP_GetXRootWindow(struct tagDESKTOP *pDesktop); -extern void X11DRV_DESKTOP_Initialize(struct tagDESKTOP *pDesktop); -extern void X11DRV_DESKTOP_Finalize(struct tagDESKTOP *pDesktop); -extern int X11DRV_DESKTOP_GetScreenWidth(struct tagDESKTOP *pDesktop); -extern int X11DRV_DESKTOP_GetScreenHeight(struct tagDESKTOP *pDesktop); -extern int X11DRV_DESKTOP_GetScreenDepth(struct tagDESKTOP *pDesktop); - /* X11 event driver */ -extern struct tagEVENT_DRIVER X11DRV_EVENT_Driver; - extern WORD X11DRV_EVENT_XStateToKeyState( int state ) ; extern BOOL X11DRV_EVENT_Init(void); @@ -384,8 +363,6 @@ void X11DRV_EVENT_SetDGAStatus(HWND hwnd, int event_base) ; /* X11 keyboard driver */ -extern struct tagKEYBOARD_DRIVER X11DRV_KEYBOARD_Driver; - extern void X11DRV_KEYBOARD_Init(void); extern WORD X11DRV_KEYBOARD_VkKeyScan(CHAR cChar); extern UINT16 X11DRV_KEYBOARD_MapVirtualKey(UINT16 wCode, UINT16 wMapType); @@ -431,8 +408,6 @@ extern void X11DRV_MONITOR_SetScreenSaveTimeout(struct tagMONITOR *pMonitor, int /* X11 mouse driver */ -extern struct tagMOUSE_DRIVER X11DRV_MOUSE_Driver; - extern void X11DRV_MOUSE_Init(); extern void X11DRV_MOUSE_SetCursor(struct tagCURSORICONINFO *lpCursor); extern void X11DRV_MOUSE_MoveCursor(WORD wAbsX, WORD wAbsY); diff --git a/loader/main.c b/loader/main.c index b9d787e6460..48dca560e17 100644 --- a/loader/main.c +++ b/loader/main.c @@ -110,9 +110,6 @@ BOOL MAIN_MainInit( int argc, char *argv[], BOOL win32 ) if (!LoadLibraryA( "x11drv" )) return FALSE; - /* Initialize event handling */ - if (!EVENT_Init()) return FALSE; - SHELL_InitRegistrySaving(); return TRUE; diff --git a/misc/main.c b/misc/main.c index e61cd93adaa..98471c3890c 100644 --- a/misc/main.c +++ b/misc/main.c @@ -6,12 +6,6 @@ #include "config.h" -#ifndef X_DISPLAY_MISSING -#include "x11drv.h" -#else /* !defined(X_DISPLAY_MISSING) */ -#include "ttydrv.h" -#endif /* !defined(X_DISPLAY_MISSING) */ - #include #include #include @@ -640,11 +634,6 @@ void MAIN_ParseLanguageOption( const char *arg ) */ static void called_at_exit(void) { - if (GDI_Driver) - GDI_Driver->pFinalize(); - if (USER_Driver) - USER_Driver->pFinalize(); - CONSOLE_Close(); } diff --git a/objects/gdiobj.c b/objects/gdiobj.c index 7295647ed4d..b586ba8157e 100644 --- a/objects/gdiobj.c +++ b/objects/gdiobj.c @@ -338,10 +338,6 @@ BOOL GDI_Init(void) ReadFontInformation("SystemFixed", &SystemFixedFont, 0, systemIsBold, 0, 0, 0); ReadFontInformation("DefaultGui", &DefaultGuiFont, 0, 0, 0, 0, 0); - /* Initialize drivers */ - - GDI_Driver->pInitialize(); - /* Create default palette */ /* DR well *this* palette can't be moveable (?) */ diff --git a/windows/event.c b/windows/event.c index cfe650e8e78..37dd5b925c4 100644 --- a/windows/event.c +++ b/windows/event.c @@ -7,30 +7,10 @@ #include "message.h" #include "user.h" -#include "x11drv.h" -#include "ttydrv.h" -#include "monitor.h" +#include "win.h" #include "debugtools.h" -DECLARE_DEBUG_CHANNEL(event) - -/**********************************************************************/ - -EVENT_DRIVER *EVENT_Driver = NULL; - -/*********************************************************************** - * EVENT_Init - * - * Initialize input event handling - */ -BOOL EVENT_Init(void) -{ - USER_Driver->pInitialize(); - - MONITOR_Initialize(&MONITOR_PrimaryMonitor); - - return EVENT_Driver->pInit(); -} +DECLARE_DEBUG_CHANNEL(event); /*********************************************************************** * EVENT_Synchronize @@ -40,7 +20,7 @@ BOOL EVENT_Init(void) void EVENT_Synchronize( void ) { int iWndsLocks = WIN_SuspendWndsLock(); - EVENT_Driver->pSynchronize(); + USER_Driver->pSynchronize(); WIN_RestoreWndsLock(iWndsLocks); } @@ -49,7 +29,7 @@ void EVENT_Synchronize( void ) */ BOOL EVENT_CheckFocus(void) { - return EVENT_Driver->pCheckFocus(); + return USER_Driver->pCheckFocus(); } diff --git a/windows/keyboard.c b/windows/keyboard.c index 2c9ce44c48c..d9c14072d88 100644 --- a/windows/keyboard.c +++ b/windows/keyboard.c @@ -20,6 +20,7 @@ #include "win.h" #include "heap.h" #include "keyboard.h" +#include "user.h" #include "message.h" #include "callback.h" #include "builtin16.h" @@ -32,8 +33,6 @@ DECLARE_DEBUG_CHANNEL(event) /**********************************************************************/ -KEYBOARD_DRIVER *KEYBOARD_Driver = NULL; - static LPKEYBD_EVENT_PROC DefKeybEventProc = NULL; LPBYTE pKeyStateTable = NULL; @@ -67,7 +66,7 @@ VOID WINAPI KEYBOARD_Enable( LPKEYBD_EVENT_PROC lpKeybEventProc, /* all states to false */ memset( lpKeyState, 0, 256 ); - if (!initDone) KEYBOARD_Driver->pInit(); + if (!initDone) USER_Driver->pInitKeyboard(); initDone = TRUE; } @@ -181,7 +180,7 @@ DWORD WINAPI OemKeyScan(WORD wOemChar) WORD WINAPI VkKeyScan16(CHAR cChar) { - return KEYBOARD_Driver->pVkKeyScan(cChar); + return USER_Driver->pVkKeyScan(cChar); } /****************************************************************************** @@ -214,7 +213,7 @@ INT16 WINAPI GetKeyboardType16(INT16 nTypeFlag) */ UINT16 WINAPI MapVirtualKey16(UINT16 wCode, UINT16 wMapType) { - return KEYBOARD_Driver->pMapVirtualKey(wCode,wMapType); + return USER_Driver->pMapVirtualKey(wCode,wMapType); } /**************************************************************************** @@ -231,7 +230,7 @@ INT16 WINAPI GetKBCodePage16(void) */ INT16 WINAPI GetKeyNameText16(LONG lParam, LPSTR lpBuffer, INT16 nSize) { - return KEYBOARD_Driver->pGetKeyNameText(lParam, lpBuffer, nSize); + return USER_Driver->pGetKeyNameText(lParam, lpBuffer, nSize); } /**************************************************************************** @@ -255,9 +254,7 @@ INT16 WINAPI GetKeyNameText16(LONG lParam, LPSTR lpBuffer, INT16 nSize) INT16 WINAPI ToAscii16(UINT16 virtKey,UINT16 scanCode, LPBYTE lpKeyState, LPVOID lpChar, UINT16 flags) { - return KEYBOARD_Driver->pToAscii( - virtKey, scanCode, lpKeyState, lpChar, flags - ); + return USER_Driver->pToAscii( virtKey, scanCode, lpKeyState, lpChar, flags ); } /*********************************************************************** @@ -265,7 +262,7 @@ INT16 WINAPI ToAscii16(UINT16 virtKey,UINT16 scanCode, LPBYTE lpKeyState, */ BOOL KEYBOARD_GetBeepActive() { - return KEYBOARD_Driver->pGetBeepActive(); + return USER_Driver->pGetBeepActive(); } /*********************************************************************** @@ -273,7 +270,7 @@ BOOL KEYBOARD_GetBeepActive() */ void KEYBOARD_SetBeepActive(BOOL bActivate) { - KEYBOARD_Driver->pSetBeepActive(bActivate); + USER_Driver->pSetBeepActive(bActivate); } /*********************************************************************** @@ -281,6 +278,6 @@ void KEYBOARD_SetBeepActive(BOOL bActivate) */ void KEYBOARD_Beep(void) { - KEYBOARD_Driver->pBeep(); + USER_Driver->pBeep(); } diff --git a/windows/multimon.c b/windows/multimon.c index 67944b3c9e4..a3076e25ea8 100644 --- a/windows/multimon.c +++ b/windows/multimon.c @@ -37,22 +37,6 @@ static MONITOR *MONITOR_GetMonitor(HMONITOR hMonitor) } #endif -/*********************************************************************** - * MONITOR_Initialize - */ -void MONITOR_Initialize(MONITOR *pMonitor) -{ - MONITOR_Driver->pInitialize(pMonitor); -} - -/*********************************************************************** - * MONITOR_Finalize - */ -void MONITOR_Finalize(MONITOR *pMonitor) -{ - MONITOR_Driver->pFinalize(pMonitor); -} - /*********************************************************************** * MONITOR_IsSingleWindow */ diff --git a/windows/ttydrv/desktop.c b/windows/ttydrv/desktop.c index 3e1334b15aa..23ad73c51d2 100644 --- a/windows/ttydrv/desktop.c +++ b/windows/ttydrv/desktop.c @@ -25,51 +25,3 @@ WINDOW *TTYDRV_DESKTOP_GetCursesRootWindow(DESKTOP *pDesktop) return TTYDRV_MONITOR_GetCursesRootWindow(pDesktop->pPrimaryMonitor); } #endif /* defined(HAVE_LIBCURSES) */ - -/*********************************************************************** - * TTYDRV_DESKTOP_Initialize - */ -void TTYDRV_DESKTOP_Initialize(DESKTOP *pDesktop) -{ - TRACE("(%p): stub\n", pDesktop); - - pDesktop->pPrimaryMonitor = &MONITOR_PrimaryMonitor; -} - -/*********************************************************************** - * TTYDRV_DESKTOP_Finalize - */ -void TTYDRV_DESKTOP_Finalize(DESKTOP *pDesktop) -{ - TRACE("(%p): stub\n", pDesktop); -} - -/*********************************************************************** - * TTYDRV_DESKTOP_GetScreenWidth - * - * Return the width of the screen associated to the desktop. - */ -int TTYDRV_DESKTOP_GetScreenWidth(DESKTOP *pDesktop) -{ - return MONITOR_GetWidth(pDesktop->pPrimaryMonitor); -} - -/*********************************************************************** - * TTYDRV_DESKTOP_GetScreenHeight - * - * Return the width of the screen associated to the desktop. - */ -int TTYDRV_DESKTOP_GetScreenHeight(DESKTOP *pDesktop) -{ - return MONITOR_GetHeight(pDesktop->pPrimaryMonitor); -} - -/*********************************************************************** - * TTYDRV_DESKTOP_GetScreenDepth - * - * Return the depth of the screen associated to the desktop. - */ -int TTYDRV_DESKTOP_GetScreenDepth(DESKTOP *pDesktop) -{ - return MONITOR_GetDepth(pDesktop->pPrimaryMonitor); -} diff --git a/windows/ttydrv/event.c b/windows/ttydrv/event.c index bf7e5217cce..39973791f72 100644 --- a/windows/ttydrv/event.c +++ b/windows/ttydrv/event.c @@ -6,14 +6,6 @@ #include "ttydrv.h" -/*********************************************************************** - * TTYDRV_EVENT_Init - */ -BOOL TTYDRV_EVENT_Init(void) -{ - return TRUE; -} - /*********************************************************************** * TTYDRV_EVENT_Synchronize */ diff --git a/windows/ttydrv/init.c b/windows/ttydrv/init.c index 55f8e647846..74bd93f3149 100644 --- a/windows/ttydrv/init.c +++ b/windows/ttydrv/init.c @@ -5,21 +5,11 @@ */ #include "clipboard.h" -#include "desktop.h" -#include "keyboard.h" -#include "message.h" #include "monitor.h" -#include "mouse.h" #include "user.h" #include "win.h" #include "ttydrv.h" -USER_DRIVER TTYDRV_USER_Driver = -{ - TTYDRV_USER_Initialize, - TTYDRV_USER_Finalize -}; - CLIPBOARD_DRIVER TTYDRV_CLIPBOARD_Driver = { TTYDRV_CLIPBOARD_Acquire, @@ -32,36 +22,6 @@ CLIPBOARD_DRIVER TTYDRV_CLIPBOARD_Driver = TTYDRV_CLIPBOARD_ResetOwner }; -DESKTOP_DRIVER TTYDRV_DESKTOP_Driver = -{ - TTYDRV_DESKTOP_Initialize, - TTYDRV_DESKTOP_Finalize -}; - -EVENT_DRIVER TTYDRV_EVENT_Driver = -{ - TTYDRV_EVENT_Init, - TTYDRV_EVENT_Synchronize, - TTYDRV_EVENT_CheckFocus, - TTYDRV_EVENT_UserRepaintDisable -}; - -KEYBOARD_DRIVER TTYDRV_KEYBOARD_Driver = -{ - TTYDRV_KEYBOARD_Init, - TTYDRV_KEYBOARD_VkKeyScan, - TTYDRV_KEYBOARD_MapVirtualKey, - TTYDRV_KEYBOARD_GetKeyNameText, - TTYDRV_KEYBOARD_ToAscii, - TTYDRV_KEYBOARD_GetBeepActive, - TTYDRV_KEYBOARD_SetBeepActive, - TTYDRV_KEYBOARD_Beep, - TTYDRV_KEYBOARD_GetDIState, - TTYDRV_KEYBOARD_GetDIData, - TTYDRV_KEYBOARD_GetKeyboardConfig, - TTYDRV_KEYBOARD_SetKeyboardConfig -}; - MONITOR_DRIVER TTYDRV_MONITOR_Driver = { TTYDRV_MONITOR_Initialize, @@ -76,14 +36,6 @@ MONITOR_DRIVER TTYDRV_MONITOR_Driver = TTYDRV_MONITOR_SetScreenSaveTimeout }; -MOUSE_DRIVER TTYDRV_MOUSE_Driver = -{ - TTYDRV_MOUSE_Init, - TTYDRV_MOUSE_SetCursor, - TTYDRV_MOUSE_MoveCursor, - TTYDRV_MOUSE_EnableWarpPointer -}; - WND_DRIVER TTYDRV_WND_Driver = { TTYDRV_WND_Initialize, diff --git a/windows/ttydrv/keyboard.c b/windows/ttydrv/keyboard.c index f59975a7bde..d03e35ca154 100644 --- a/windows/ttydrv/keyboard.c +++ b/windows/ttydrv/keyboard.c @@ -5,6 +5,7 @@ */ #include "dinput.h" +#include "user.h" #include "keyboard.h" #include "ttydrv.h" diff --git a/windows/ttydrv/main.c b/windows/ttydrv/main.c index f20283ba6bf..201d94f0303 100644 --- a/windows/ttydrv/main.c +++ b/windows/ttydrv/main.c @@ -16,25 +16,3 @@ #include "ttydrv.h" #include "win.h" -/*********************************************************************** - * TTYDRV_USER_Initialize - */ -BOOL TTYDRV_USER_Initialize(void) -{ - CLIPBOARD_Driver = &TTYDRV_CLIPBOARD_Driver; - DESKTOP_Driver = &TTYDRV_DESKTOP_Driver; - EVENT_Driver = &TTYDRV_EVENT_Driver; - KEYBOARD_Driver = &TTYDRV_KEYBOARD_Driver; - MONITOR_Driver = &TTYDRV_MONITOR_Driver; - MOUSE_Driver = &TTYDRV_MOUSE_Driver; - WND_Driver = &TTYDRV_WND_Driver; - - return TRUE; -} - -/*********************************************************************** - * TTYDRV_USER_Finalize - */ -void TTYDRV_USER_Finalize(void) -{ -} diff --git a/windows/win.c b/windows/win.c index ab364d7edf2..60b3abfadef 100644 --- a/windows/win.c +++ b/windows/win.c @@ -20,6 +20,7 @@ #include "hook.h" #include "menu.h" #include "message.h" +#include "monitor.h" #include "nonclient.h" #include "queue.h" #include "winpos.h" @@ -602,10 +603,9 @@ BOOL WIN_CreateDesktopWindow(void) pWndDesktop = (WND *) USER_HEAP_LIN_ADDR( hwndDesktop ); pDesktop = (DESKTOP *) pWndDesktop->wExtra; - pDesktop->pDriver = DESKTOP_Driver; - pWndDesktop->pDriver = WND_Driver; + pDesktop->pPrimaryMonitor = &MONITOR_PrimaryMonitor; - pDesktop->pDriver->pInitialize(pDesktop); + pWndDesktop->pDriver = WND_Driver; pWndDesktop->pDriver->pInitialize(pWndDesktop); pWndDesktop->next = NULL; diff --git a/windows/x11drv/desktop.c b/windows/x11drv/desktop.c index 49bd6c29f3a..58fa197d668 100644 --- a/windows/x11drv/desktop.c +++ b/windows/x11drv/desktop.c @@ -37,49 +37,4 @@ Window X11DRV_DESKTOP_GetXRootWindow(DESKTOP *pDesktop) return X11DRV_MONITOR_GetXRootWindow(pDesktop->pPrimaryMonitor); } -/*********************************************************************** - * X11DRV_DESKTOP_Initialize - */ -void X11DRV_DESKTOP_Initialize(DESKTOP *pDesktop) -{ - pDesktop->pPrimaryMonitor = &MONITOR_PrimaryMonitor; -} - -/*********************************************************************** - * X11DRV_DESKTOP_Finalize - */ -void X11DRV_DESKTOP_Finalize(DESKTOP *pDesktop) -{ -} - -/*********************************************************************** - * X11DRV_DESKTOP_GetScreenWidth - * - * Return the width of the screen associated to the desktop. - */ -int X11DRV_DESKTOP_GetScreenWidth(DESKTOP *pDesktop) -{ - return MONITOR_GetWidth(pDesktop->pPrimaryMonitor); -} - -/*********************************************************************** - * X11DRV_DESKTOP_GetScreenHeight - * - * Return the width of the screen associated to the desktop. - */ -int X11DRV_DESKTOP_GetScreenHeight(DESKTOP *pDesktop) -{ - return MONITOR_GetHeight(pDesktop->pPrimaryMonitor); -} - -/*********************************************************************** - * X11DRV_DESKTOP_GetScreenDepth - * - * Return the depth of the screen associated to the desktop. - */ -int X11DRV_DESKTOP_GetScreenDepth(DESKTOP *pDesktop) -{ - return MONITOR_GetDepth(pDesktop->pPrimaryMonitor); -} - #endif /* X_DISPLAY_MISSING */ diff --git a/windows/x11drv/init.c b/windows/x11drv/init.c index 0b4870bd873..5913a4aa442 100644 --- a/windows/x11drv/init.c +++ b/windows/x11drv/init.c @@ -9,21 +9,11 @@ #ifndef X_DISPLAY_MISSING #include "clipboard.h" -#include "desktop.h" -#include "keyboard.h" -#include "message.h" #include "monitor.h" -#include "mouse.h" #include "user.h" #include "win.h" #include "x11drv.h" -USER_DRIVER X11DRV_USER_Driver = -{ - X11DRV_USER_Initialize, - X11DRV_USER_Finalize -}; - CLIPBOARD_DRIVER X11DRV_CLIPBOARD_Driver = { X11DRV_CLIPBOARD_Acquire, @@ -36,36 +26,6 @@ CLIPBOARD_DRIVER X11DRV_CLIPBOARD_Driver = X11DRV_CLIPBOARD_ResetOwner }; -DESKTOP_DRIVER X11DRV_DESKTOP_Driver = -{ - X11DRV_DESKTOP_Initialize, - X11DRV_DESKTOP_Finalize -}; - -EVENT_DRIVER X11DRV_EVENT_Driver = -{ - X11DRV_EVENT_Init, - X11DRV_EVENT_Synchronize, - X11DRV_EVENT_CheckFocus, - X11DRV_EVENT_UserRepaintDisable -}; - -KEYBOARD_DRIVER X11DRV_KEYBOARD_Driver = -{ - X11DRV_KEYBOARD_Init, - X11DRV_KEYBOARD_VkKeyScan, - X11DRV_KEYBOARD_MapVirtualKey, - X11DRV_KEYBOARD_GetKeyNameText, - X11DRV_KEYBOARD_ToAscii, - X11DRV_KEYBOARD_GetBeepActive, - X11DRV_KEYBOARD_SetBeepActive, - X11DRV_KEYBOARD_Beep, - X11DRV_KEYBOARD_GetDIState, - X11DRV_KEYBOARD_GetDIData, - X11DRV_KEYBOARD_GetKeyboardConfig, - X11DRV_KEYBOARD_SetKeyboardConfig -}; - MONITOR_DRIVER X11DRV_MONITOR_Driver = { X11DRV_MONITOR_Initialize, @@ -80,14 +40,6 @@ MONITOR_DRIVER X11DRV_MONITOR_Driver = X11DRV_MONITOR_SetScreenSaveTimeout }; -MOUSE_DRIVER X11DRV_MOUSE_Driver = -{ - X11DRV_MOUSE_Init, - X11DRV_MOUSE_SetCursor, - X11DRV_MOUSE_MoveCursor, - X11DRV_MOUSE_EnableWarpPointer -}; - WND_DRIVER X11DRV_WND_Driver = { X11DRV_WND_Initialize, diff --git a/windows/x11drv/keyboard.c b/windows/x11drv/keyboard.c index acb759278a7..ca740f50aa6 100644 --- a/windows/x11drv/keyboard.c +++ b/windows/x11drv/keyboard.c @@ -26,6 +26,7 @@ #include "wine/winuser16.h" #include "dinput.h" #include "debugtools.h" +#include "user.h" #include "keyboard.h" #include "message.h" #include "winnls.h" @@ -34,7 +35,6 @@ DEFAULT_DEBUG_CHANNEL(keyboard) DECLARE_DEBUG_CHANNEL(key) -DECLARE_DEBUG_CHANNEL(x11drv) DECLARE_DEBUG_CHANNEL(dinput) extern BYTE InputKeyStateTable[256]; @@ -1474,7 +1474,7 @@ BOOL X11DRV_KEYBOARD_GetDIState(DWORD len, LPVOID ptr) } return TRUE; } - WARN_(x11drv)("whoops, X11DRV_KEYBOARD_GetState got len %ld?\n", len); + WARN("whoops, X11DRV_KEYBOARD_GetState got len %ld?\n", len); return TRUE; } diff --git a/windows/x11drv/main.c b/windows/x11drv/main.c index d0be677b5f8..6b432587d97 100644 --- a/windows/x11drv/main.c +++ b/windows/x11drv/main.c @@ -32,15 +32,6 @@ #include "windef.h" #include "x11drv.h" -/**********************************************************************/ - -static void X11DRV_USER_SaveSetup(void); -static void X11DRV_USER_RestoreSetup(void); - -/**********************************************************************/ - -static XKeyboardState X11DRV_XKeyboardState; -Display *display; /*********************************************************************** * X11DRV_GetXScreen @@ -62,90 +53,4 @@ Window X11DRV_GetXRootWindow() return X11DRV_MONITOR_GetXRootWindow(&MONITOR_PrimaryMonitor); } -/*********************************************************************** - * X11DRV_USER_ErrorHandler - */ -static int X11DRV_USER_ErrorHandler(Display *display, XErrorEvent *error_evt) -{ - DebugBreak(); /* force an entry in the debugger */ - return 0; -} - -/*********************************************************************** - * X11DRV_USER_Initialize - */ -BOOL X11DRV_USER_Initialize(void) -{ - CLIPBOARD_Driver = &X11DRV_CLIPBOARD_Driver; - DESKTOP_Driver = &X11DRV_DESKTOP_Driver; - EVENT_Driver = &X11DRV_EVENT_Driver; - KEYBOARD_Driver = &X11DRV_KEYBOARD_Driver; - MONITOR_Driver = &X11DRV_MONITOR_Driver; - MOUSE_Driver = &X11DRV_MOUSE_Driver; - WND_Driver = &X11DRV_WND_Driver; - - /* We need this before calling any Xlib function */ - InitializeCriticalSection( &X11DRV_CritSection ); - MakeCriticalSectionGlobal( &X11DRV_CritSection ); - - putenv("XKB_DISABLE="); /* Disable XKB extension if present. */ - - /* Open display */ - - if (!(display = TSXOpenDisplay( Options.display ))) - { - MESSAGE( "%s: Can't open display: %s\n", - argv0, Options.display ? Options.display : "(none specified)" ); - ExitProcess(1); - } - - /* tell the libX11 that we will do input method handling ourselves - * that keep libX11 from doing anything whith dead keys, allowing Wine - * to have total control over dead keys, that is this line allows - * them to work in Wine, even whith a libX11 including the dead key - * patches from Th.Quinot (http://Web.FdN.FR/~tquinot/dead-keys.en.html) - */ - TSXOpenIM(display,NULL,NULL,NULL); - - if (Options.synchronous) XSetErrorHandler( X11DRV_USER_ErrorHandler ); - if (Options.desktopGeometry && Options.managed) Options.managed = FALSE; - - X11DRV_USER_SaveSetup(); - - return TRUE; -} - -/*********************************************************************** - * X11DRV_USER_Finalize - */ -void X11DRV_USER_Finalize(void) -{ - X11DRV_USER_RestoreSetup(); -} - -/*********************************************************************** - * X11DRV_USER_SaveSetup - */ -static void X11DRV_USER_SaveSetup() -{ - TSXGetKeyboardControl(display, &X11DRV_XKeyboardState); -} - -/*********************************************************************** - * X11DRV_USER_RestoreSetup - */ -static void X11DRV_USER_RestoreSetup() -{ - XKeyboardControl keyboard_value; - - keyboard_value.key_click_percent = X11DRV_XKeyboardState.key_click_percent; - keyboard_value.bell_percent = X11DRV_XKeyboardState.bell_percent; - keyboard_value.bell_pitch = X11DRV_XKeyboardState.bell_pitch; - keyboard_value.bell_duration = X11DRV_XKeyboardState.bell_duration; - keyboard_value.auto_repeat_mode = X11DRV_XKeyboardState.global_auto_repeat; - - XChangeKeyboardControl(display, KBKeyClickPercent | KBBellPercent | - KBBellPitch | KBBellDuration | KBAutoRepeatMode, &keyboard_value); -} - #endif /* X_DISPLAY_MISSING */