Jacek Caban : kernel32: Use IOCTL_CONDRV_READ_INPUT in read_console_input.
Alexandre Julliard
julliard at winehq.org
Mon Jul 6 16:20:46 CDT 2020
Module: wine
Branch: master
Commit: 25f7aa52adf126b24c1fa2eaed9bd4b40152aa82
URL: https://source.winehq.org/git/wine.git/?a=commit;h=25f7aa52adf126b24c1fa2eaed9bd4b40152aa82
Author: Jacek Caban <jacek at codeweavers.com>
Date: Mon Jul 6 19:28:57 2020 +0200
kernel32: Use IOCTL_CONDRV_READ_INPUT in read_console_input.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/kernel32/console.c | 24 ++++++------------------
1 file changed, 6 insertions(+), 18 deletions(-)
diff --git a/dlls/kernel32/console.c b/dlls/kernel32/console.c
index e64f488afc..b1fc231c77 100644
--- a/dlls/kernel32/console.c
+++ b/dlls/kernel32/console.c
@@ -54,6 +54,7 @@
#include "winnls.h"
#include "winerror.h"
#include "wincon.h"
+#include "wine/condrv.h"
#include "wine/server.h"
#include "wine/exception.h"
#include "wine/unicode.h"
@@ -409,6 +410,8 @@ static enum read_console_input_return read_console_input(HANDLE handle, PINPUT_R
{
int fd;
enum read_console_input_return ret;
+ int blocking = timeout != 0;
+ DWORD read_bytes;
if ((fd = get_console_bare_fd(handle)) != -1)
{
@@ -421,25 +424,10 @@ static enum read_console_input_return read_console_input(HANDLE handle, PINPUT_R
close(fd);
if (ret != rci_gotone) return ret;
}
- else
- {
- if (!VerifyConsoleIoHandle(handle)) return rci_error;
-
- if (WaitForSingleObject(handle, timeout) != WAIT_OBJECT_0)
- return rci_timeout;
- }
-
- SERVER_START_REQ( read_console_input )
- {
- req->handle = console_handle_unmap(handle);
- req->flush = TRUE;
- wine_server_set_reply( req, ir, sizeof(INPUT_RECORD) );
- if (wine_server_call_err( req ) || !reply->read) ret = rci_error;
- else ret = rci_gotone;
- }
- SERVER_END_REQ;
- return ret;
+ if (!DeviceIoControl( handle, IOCTL_CONDRV_READ_INPUT, &blocking, sizeof(blocking), ir, sizeof(*ir), &read_bytes, NULL ))
+ return rci_error;
+ return read_bytes ? rci_gotone : rci_timeout;
}
More information about the wine-cvs
mailing list