From: Jacek Caban Subject: [PATCH 2/4] kernel32: Import FreeConsole from kernelbase. Message-Id: <35c4d920-d3a3-effb-03ab-ba5fe4a68e68@codeweavers.com> Date: Wed, 1 Jul 2020 16:27:14 +0200 Signed-off-by: Jacek Caban --- dlls/kernel32/console.c | 22 ++-------------------- dlls/kernel32/kernel32.spec | 2 +- dlls/kernel32/sync.c | 23 +---------------------- 3 files changed, 4 insertions(+), 43 deletions(-) diff --git a/dlls/kernel32/console.c b/dlls/kernel32/console.c index 04b89f8f55..ba3e4b0dd8 100644 --- a/dlls/kernel32/console.c +++ b/dlls/kernel32/console.c @@ -425,7 +425,7 @@ static enum read_console_input_return read_console_input(HANDLE handle, PINPUT_R if ((fd = get_console_bare_fd(handle)) != -1) { put_console_into_raw_mode(fd); - if (WaitForSingleObject(GetConsoleInputWaitHandle(), 0) != WAIT_OBJECT_0) + if (WaitForSingleObject(handle, 0) != WAIT_OBJECT_0) { ret = bare_console_fetch_input(handle, fd, timeout); } @@ -437,7 +437,7 @@ static enum read_console_input_return read_console_input(HANDLE handle, PINPUT_R { if (!VerifyConsoleIoHandle(handle)) return rci_error; - if (WaitForSingleObject(GetConsoleInputWaitHandle(), timeout) != WAIT_OBJECT_0) + if (WaitForSingleObject(handle, timeout) != WAIT_OBJECT_0) return rci_timeout; } @@ -531,24 +531,6 @@ DWORD WINAPI GetConsoleTitleA(LPSTR title, DWORD size) static WCHAR* S_EditString /* = NULL */; static unsigned S_EditStrPos /* = 0 */; -/*********************************************************************** - * FreeConsole (KERNEL32.@) - */ -BOOL WINAPI FreeConsole(VOID) -{ - BOOL ret; - - /* invalidate local copy of input event handle */ - console_wait_event = 0; - - SERVER_START_REQ(free_console) - { - ret = !wine_server_call_err( req ); - } - SERVER_END_REQ; - return ret; -} - /****************************************************************** * start_console_renderer * diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec index e7a7f162b7..c2ca098d5f 100644 --- a/dlls/kernel32/kernel32.spec +++ b/dlls/kernel32/kernel32.spec @@ -524,7 +524,7 @@ @ stdcall -import FoldStringW(long wstr long ptr long) @ stdcall -import FormatMessageA(long ptr long long ptr long ptr) @ stdcall -import FormatMessageW(long ptr long long ptr long ptr) -@ stdcall FreeConsole() +@ stdcall -import FreeConsole() @ stdcall -import FreeEnvironmentStringsA(ptr) @ stdcall -import FreeEnvironmentStringsW(ptr) @ stub -i386 FreeLSCallback diff --git a/dlls/kernel32/sync.c b/dlls/kernel32/sync.c index 4032315750..b3a59a4df9 100644 --- a/dlls/kernel32/sync.c +++ b/dlls/kernel32/sync.c @@ -85,24 +85,6 @@ static BOOL get_open_object_attributes( OBJECT_ATTRIBUTES *attr, UNICODE_STRING return TRUE; } -static HANDLE normalize_handle_if_console(HANDLE handle) -{ - if ((handle == (HANDLE)STD_INPUT_HANDLE) || - (handle == (HANDLE)STD_OUTPUT_HANDLE) || - (handle == (HANDLE)STD_ERROR_HANDLE)) - handle = GetStdHandle( HandleToULong(handle) ); - - /* yes, even screen buffer console handles are waitable, and are - * handled as a handle to the console itself !! - */ - if (is_console_handle(handle)) - { - if (VerifyConsoleIoHandle(handle)) - handle = GetConsoleInputWaitHandle(); - } - return handle; -} - /****************************************************************************** * GetTickCount64 (KERNEL32.@) */ @@ -135,10 +117,7 @@ DWORD WINAPI DECLSPEC_HOTPATCH GetTickCount(void) BOOL WINAPI RegisterWaitForSingleObject( HANDLE *wait, HANDLE object, WAITORTIMERCALLBACK callback, void *context, ULONG timeout, ULONG flags ) { - TRACE( "%p %p %p %p %d %d\n", wait, object, callback, context, timeout, flags ); - - object = normalize_handle_if_console( object ); - return set_ntstatus( RtlRegisterWait( wait, object, callback, context, timeout, flags )); + return (*wait = RegisterWaitForSingleObjectEx( object, callback, context, timeout, flags)) != NULL; } /***********************************************************************