Module: wine Branch: master Commit: 23389127ecd0cedb8d6d020c2fa1f7dc00dc9b2e URL: https://source.winehq.org/git/wine.git/?a=commit;h=23389127ecd0cedb8d6d020c2...
Author: Alexandre Julliard julliard@winehq.org Date: Wed Mar 31 10:18:54 2021 +0200
gdi32: Try to load the printer driver from the printer driver directory.
Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/gdi32/driver.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-)
diff --git a/dlls/gdi32/driver.c b/dlls/gdi32/driver.c index e146a3a4f85..09b051cd6fa 100644 --- a/dlls/gdi32/driver.c +++ b/dlls/gdi32/driver.c @@ -177,6 +177,18 @@ static void release_display_device_init_mutex( HANDLE mutex ) CloseHandle( mutex ); }
+#ifdef __i386__ +static const WCHAR printer_env[] = L"w32x86"; +#elif defined __x86_64__ +static const WCHAR printer_env[] = L"x64"; +#elif defined __arm__ +static const WCHAR printer_env[] = L"arm"; +#elif defined __aarch64__ +static const WCHAR printer_env[] = L"arm64"; +#else +#error not defined for this cpu +#endif + /********************************************************************** * DRIVER_load_driver */ @@ -200,7 +212,15 @@ const struct gdi_dc_funcs *DRIVER_load_driver( LPCWSTR name ) LeaveCriticalSection( &driver_section ); }
- if (!(module = LoadLibraryW( name ))) return NULL; + if (!(module = LoadLibraryW( name ))) + { + WCHAR path[MAX_PATH]; + + GetSystemDirectoryW( path, MAX_PATH ); + swprintf( path + wcslen(path), MAX_PATH - wcslen(path), L"\spool\drivers\%s\3\%s", + printer_env, name ); + if (!(module = LoadLibraryW( path ))) return NULL; + }
if (!(new_driver = create_driver( module ))) {