From a492e11380cc457d4968bb322e54a0c54461bcec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Sat, 28 Feb 2015 15:33:26 +0000 Subject: [PATCH] [SVCHOST]: Delay-load netapi32 and ole32 (they will be loaded only if needed). [WIN32K]: Fix cursor check (in few corner cases SYSTEMCUR(ARROW) happens to be NULL, when some programs -- ole32 -- wants to create windows while there is no graphics initialized yet). James, can you investigate? svn path=/trunk/; revision=66498 --- reactos/base/services/svchost/CMakeLists.txt | 3 ++- reactos/win32ss/user/ntuser/class.c | 13 ++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/reactos/base/services/svchost/CMakeLists.txt b/reactos/base/services/svchost/CMakeLists.txt index c5676403137..ee6f64f6e06 100644 --- a/reactos/base/services/svchost/CMakeLists.txt +++ b/reactos/base/services/svchost/CMakeLists.txt @@ -14,6 +14,7 @@ add_executable(svchost target_link_libraries(svchost uuid) set_module_type(svchost win32cui UNICODE) -add_importlibs(svchost advapi32 netapi32 rpcrt4 ole32 kernel32 ntdll) +add_delay_importlibs(svchost netapi32 ole32) +add_importlibs(svchost advapi32 rpcrt4 kernel32 ntdll) add_pch(svchost svchost.h SOURCE) add_cd_file(TARGET svchost DESTINATION reactos/system32 FOR all) diff --git a/reactos/win32ss/user/ntuser/class.c b/reactos/win32ss/user/ntuser/class.c index 623fd651304..a80bd9c3645 100644 --- a/reactos/win32ss/user/ntuser/class.c +++ b/reactos/win32ss/user/ntuser/class.c @@ -2424,8 +2424,19 @@ UserRegisterSystemClasses(VOID) wc.cbClsExtra = 0; wc.cbWndExtra = DefaultServerClasses[i].ExtraBytes; wc.hIcon = NULL; + //// System Cursors should be initilized!!! - wc.hCursor = DefaultServerClasses[i].hCursor == (HICON)OCR_NORMAL ? UserHMGetHandle(SYSTEMCUR(ARROW)) : NULL; + if (DefaultServerClasses[i].hCursor == (HICON)OCR_NORMAL && + SYSTEMCUR(ARROW) != NULL) + { + wc.hCursor = UserHMGetHandle(SYSTEMCUR(ARROW)); + } + else + { + ERR("SYSTEMCUR(ARROW) == NULL, should not happen!!\n"); + wc.hCursor = NULL; + } + hBrush = DefaultServerClasses[i].hBrush; if (hBrush <= (HBRUSH)COLOR_MENUBAR) {