wine/dlls/user driver.c
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Oct 31 09:54:55 CST 2005
ChangeSet ID: 21000
CVSROOT: /opt/cvs-commit
Module name: wine
Changes by: julliard at winehq.org 2005/10/31 09:54:55
Modified files:
dlls/user : driver.c
Log message:
Default to the null driver instead of dying if the specified display
driver couldn't be loaded.
Patch: http://cvs.winehq.org/patch.py?id=21000
Old revision New revision Changes Path
1.2 1.3 +59 -58 wine/dlls/user/driver.c
Index: wine/dlls/user/driver.c
diff -u -p wine/dlls/user/driver.c:1.2 wine/dlls/user/driver.c:1.3
--- wine/dlls/user/driver.c 31 Oct 2005 15:54:55 -0000
+++ /dev/null 31 Oct 2005 15:54:55 -0000
@@ -42,7 +42,7 @@ static const USER_DRIVER *load_driver(vo
HMODULE graphics_driver;
USER_DRIVER *driver, *prev;
- strcpy( buffer, "x11,tty" ); /* default value */
+ strcpy( buffer, "x11" ); /* default value */
/* @@ Wine registry key: HKCU\Software\Wine\Drivers */
if (!RegOpenKeyA( HKEY_CURRENT_USER, "Software\\Wine\\Drivers", &hkey ))
{
@@ -61,70 +61,66 @@ static const USER_DRIVER *load_driver(vo
if ((graphics_driver = LoadLibraryA( libname )) != 0) break;
name = next;
}
- if (!graphics_driver)
- {
- MESSAGE( "wine: Could not load graphics driver '%s'.\n", buffer );
- if (!strcasecmp( buffer, "x11" ))
- MESSAGE( "Make sure that your X server is running and that $DISPLAY is set correctly.\n" );
- ExitProcess(1);
- }
driver = HeapAlloc( GetProcessHeap(), 0, sizeof(*driver) );
memcpy( driver, &null_driver, sizeof(*driver) );
+ if (graphics_driver)
+ {
#define GET_USER_FUNC(name) \
do { if ((ptr = GetProcAddress( graphics_driver, #name ))) driver->p##name = ptr; } while(0)
- GET_USER_FUNC(ActivateKeyboardLayout);
- GET_USER_FUNC(Beep);
- GET_USER_FUNC(GetAsyncKeyState);
- GET_USER_FUNC(GetKeyNameText);
- GET_USER_FUNC(GetKeyboardLayout);
- GET_USER_FUNC(GetKeyboardLayoutList);
- GET_USER_FUNC(GetKeyboardLayoutName);
- GET_USER_FUNC(LoadKeyboardLayout);
- GET_USER_FUNC(MapVirtualKeyEx);
- GET_USER_FUNC(SendInput);
- GET_USER_FUNC(ToUnicodeEx);
- GET_USER_FUNC(UnloadKeyboardLayout);
- GET_USER_FUNC(VkKeyScanEx);
- GET_USER_FUNC(SetCursor);
- GET_USER_FUNC(GetCursorPos);
- GET_USER_FUNC(SetCursorPos);
- GET_USER_FUNC(GetScreenSaveActive);
- GET_USER_FUNC(SetScreenSaveActive);
- GET_USER_FUNC(AcquireClipboard);
- GET_USER_FUNC(EmptyClipboard);
- GET_USER_FUNC(SetClipboardData);
- GET_USER_FUNC(GetClipboardData);
- GET_USER_FUNC(CountClipboardFormats);
- GET_USER_FUNC(EnumClipboardFormats);
- GET_USER_FUNC(IsClipboardFormatAvailable);
- GET_USER_FUNC(RegisterClipboardFormat);
- GET_USER_FUNC(GetClipboardFormatName);
- GET_USER_FUNC(EndClipboardUpdate);
- GET_USER_FUNC(ResetSelectionOwner);
- GET_USER_FUNC(ChangeDisplaySettingsEx);
- GET_USER_FUNC(EnumDisplaySettingsEx);
- GET_USER_FUNC(CreateDesktopWindow);
- GET_USER_FUNC(CreateWindow);
- GET_USER_FUNC(DestroyWindow);
- GET_USER_FUNC(GetDCEx);
- GET_USER_FUNC(MsgWaitForMultipleObjectsEx);
- GET_USER_FUNC(ReleaseDC);
- GET_USER_FUNC(ScrollDC);
- GET_USER_FUNC(SetFocus);
- GET_USER_FUNC(SetParent);
- GET_USER_FUNC(SetWindowPos);
- GET_USER_FUNC(SetWindowRgn);
- GET_USER_FUNC(SetWindowIcon);
- GET_USER_FUNC(SetWindowStyle);
- GET_USER_FUNC(SetWindowText);
- GET_USER_FUNC(ShowWindow);
- GET_USER_FUNC(SysCommandSizeMove);
- GET_USER_FUNC(WindowFromDC);
- GET_USER_FUNC(WindowMessage);
+ GET_USER_FUNC(ActivateKeyboardLayout);
+ GET_USER_FUNC(Beep);
+ GET_USER_FUNC(GetAsyncKeyState);
+ GET_USER_FUNC(GetKeyNameText);
+ GET_USER_FUNC(GetKeyboardLayout);
+ GET_USER_FUNC(GetKeyboardLayoutList);
+ GET_USER_FUNC(GetKeyboardLayoutName);
+ GET_USER_FUNC(LoadKeyboardLayout);
+ GET_USER_FUNC(MapVirtualKeyEx);
+ GET_USER_FUNC(SendInput);
+ GET_USER_FUNC(ToUnicodeEx);
+ GET_USER_FUNC(UnloadKeyboardLayout);
+ GET_USER_FUNC(VkKeyScanEx);
+ GET_USER_FUNC(SetCursor);
+ GET_USER_FUNC(GetCursorPos);
+ GET_USER_FUNC(SetCursorPos);
+ GET_USER_FUNC(GetScreenSaveActive);
+ GET_USER_FUNC(SetScreenSaveActive);
+ GET_USER_FUNC(AcquireClipboard);
+ GET_USER_FUNC(EmptyClipboard);
+ GET_USER_FUNC(SetClipboardData);
+ GET_USER_FUNC(GetClipboardData);
+ GET_USER_FUNC(CountClipboardFormats);
+ GET_USER_FUNC(EnumClipboardFormats);
+ GET_USER_FUNC(IsClipboardFormatAvailable);
+ GET_USER_FUNC(RegisterClipboardFormat);
+ GET_USER_FUNC(GetClipboardFormatName);
+ GET_USER_FUNC(EndClipboardUpdate);
+ GET_USER_FUNC(ResetSelectionOwner);
+ GET_USER_FUNC(ChangeDisplaySettingsEx);
+ GET_USER_FUNC(EnumDisplaySettingsEx);
+ GET_USER_FUNC(CreateDesktopWindow);
+ GET_USER_FUNC(CreateWindow);
+ GET_USER_FUNC(DestroyWindow);
+ GET_USER_FUNC(GetDCEx);
+ GET_USER_FUNC(MsgWaitForMultipleObjectsEx);
+ GET_USER_FUNC(ReleaseDC);
+ GET_USER_FUNC(ScrollDC);
+ GET_USER_FUNC(SetFocus);
+ GET_USER_FUNC(SetParent);
+ GET_USER_FUNC(SetWindowPos);
+ GET_USER_FUNC(SetWindowRgn);
+ GET_USER_FUNC(SetWindowIcon);
+ GET_USER_FUNC(SetWindowStyle);
+ GET_USER_FUNC(SetWindowText);
+ GET_USER_FUNC(ShowWindow);
+ GET_USER_FUNC(SysCommandSizeMove);
+ GET_USER_FUNC(WindowFromDC);
+ GET_USER_FUNC(WindowMessage);
#undef GET_USER_FUNC
+ }
prev = InterlockedCompareExchangePointer( (void **)&USER_Driver, driver, (void *)&lazy_load_driver );
if (prev != &lazy_load_driver)
@@ -308,7 +304,12 @@ static BOOL nulldrv_CreateDesktopWindow(
static BOOL nulldrv_CreateWindow( HWND hwnd, CREATESTRUCTA *cs, BOOL unicode )
{
- return TRUE;
+ static int warned;
+
+ if (!warned++)
+ MESSAGE( "Application tries to create a window, but no driver could be loaded.\n"
+ "Make sure that your X server is running and that $DISPLAY is set correctly.\n" );
+ return FALSE;
}
static void nulldrv_DestroyWindow( HWND hwnd )
More information about the wine-cvs
mailing list