Module: wine Branch: master Commit: 5f6bb63800c14a46a4124c5a5e42094cae3a38fc URL: https://source.winehq.org/git/wine.git/?a=commit;h=5f6bb63800c14a46a4124c5a5...
Author: Jacek Caban jacek@codeweavers.com Date: Tue Jul 28 17:10:40 2020 +0200
kernelbase: Use IOCTL_CONDRV_READ_OUTPUT in ReadConsoleOutputAttribute.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/kernelbase/console.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-)
diff --git a/dlls/kernelbase/console.c b/dlls/kernelbase/console.c index 63e9b20292..a4b9b8c491 100644 --- a/dlls/kernelbase/console.c +++ b/dlls/kernelbase/console.c @@ -786,6 +786,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH PeekConsoleInputW( HANDLE handle, INPUT_RECORD *bu BOOL WINAPI DECLSPEC_HOTPATCH ReadConsoleOutputAttribute( HANDLE handle, WORD *attr, DWORD length, COORD coord, DWORD *count ) { + struct condrv_output_params params; BOOL ret;
TRACE( "(%p,%p,%d,%dx%d,%p)\n", handle, attr, length, coord.X, coord.Y, count ); @@ -796,18 +797,13 @@ BOOL WINAPI DECLSPEC_HOTPATCH ReadConsoleOutputAttribute( HANDLE handle, WORD *a return FALSE; }
- *count = 0; - SERVER_START_REQ( read_console_output ) - { - req->handle = console_handle_unmap( handle ); - req->x = coord.X; - req->y = coord.Y; - req->mode = CHAR_INFO_MODE_ATTR; - req->wrap = TRUE; - wine_server_set_reply( req, attr, length * sizeof(WORD) ); - if ((ret = !wine_server_call_err( req ))) *count = wine_server_reply_size(reply) / sizeof(WORD); - } - SERVER_END_REQ; + params.mode = CHAR_INFO_MODE_ATTR; + params.x = coord.X; + params.y = coord.Y; + params.width = 0; + ret = console_ioctl( handle, IOCTL_CONDRV_READ_OUTPUT, ¶ms, sizeof(params), + attr, length * sizeof(*attr), count ); + *count /= sizeof(*attr); return ret; }