Jacek Caban : kernel32: Use IOCT_CONDRV_GET_OUTPUT_INFO in GetCurrentConsoleFontEx.
Alexandre Julliard
julliard at winehq.org
Thu Jul 9 17:10:40 CDT 2020
Module: wine
Branch: master
Commit: 2789787f011e1a923dc22b6884433826e9350725
URL: https://source.winehq.org/git/wine.git/?a=commit;h=2789787f011e1a923dc22b6884433826e9350725
Author: Jacek Caban <jacek at codeweavers.com>
Date: Thu Jul 9 19:28:32 2020 +0200
kernel32: Use IOCT_CONDRV_GET_OUTPUT_INFO in GetCurrentConsoleFontEx.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/kernel32/console.c | 57 ++++++++++++++++++++++---------------------------
1 file changed, 25 insertions(+), 32 deletions(-)
diff --git a/dlls/kernel32/console.c b/dlls/kernel32/console.c
index 0a45a0e294..e21c8a890e 100644
--- a/dlls/kernel32/console.c
+++ b/dlls/kernel32/console.c
@@ -1326,11 +1326,11 @@ BOOL WINAPI SetConsoleKeyShortcuts(BOOL set, BYTE keys, VOID *a, DWORD b)
BOOL WINAPI GetCurrentConsoleFontEx(HANDLE hConsole, BOOL maxwindow, CONSOLE_FONT_INFOEX *fontinfo)
{
- BOOL ret;
+ DWORD size;
struct
{
- unsigned int color_map[16];
- WCHAR face_name[LF_FACESIZE];
+ struct condrv_output_info info;
+ WCHAR face_name[LF_FACESIZE - 1];
} data;
if (fontinfo->cbSize != sizeof(CONSOLE_FONT_INFOEX))
@@ -1339,37 +1339,30 @@ BOOL WINAPI GetCurrentConsoleFontEx(HANDLE hConsole, BOOL maxwindow, CONSOLE_FON
return FALSE;
}
- SERVER_START_REQ(get_console_output_info)
+ if (!DeviceIoControl( hConsole, IOCTL_CONDRV_GET_OUTPUT_INFO, NULL, 0,
+ &data, sizeof(data), &size, NULL ))
{
- req->handle = console_handle_unmap(hConsole);
- wine_server_set_reply( req, &data, sizeof(data) - sizeof(WCHAR) );
- if ((ret = !wine_server_call_err(req)))
- {
- fontinfo->nFont = 0;
- if (maxwindow)
- {
- fontinfo->dwFontSize.X = min(reply->width, reply->max_width);
- fontinfo->dwFontSize.Y = min(reply->height, reply->max_height);
- }
- else
- {
- fontinfo->dwFontSize.X = reply->win_right - reply->win_left + 1;
- fontinfo->dwFontSize.Y = reply->win_bottom - reply->win_top + 1;
- }
- if (wine_server_reply_size( reply ) > sizeof(data.color_map))
- {
- data_size_t len = wine_server_reply_size( reply ) - sizeof(data.color_map);
- memcpy( fontinfo->FaceName, data.face_name, len );
- fontinfo->FaceName[len / sizeof(WCHAR)] = 0;
- }
- else
- fontinfo->FaceName[0] = 0;
- fontinfo->FontFamily = reply->font_pitch_family;
- fontinfo->FontWeight = reply->font_weight;
- }
+ SetLastError( ERROR_INVALID_HANDLE );
+ return FALSE;
}
- SERVER_END_REQ;
- return ret;
+
+ fontinfo->nFont = 0;
+ if (maxwindow)
+ {
+ fontinfo->dwFontSize.X = min( data.info.width, data.info.max_width );
+ fontinfo->dwFontSize.Y = min( data.info.height, data.info.max_height );
+ }
+ else
+ {
+ fontinfo->dwFontSize.X = data.info.win_right - data.info.win_left + 1;
+ fontinfo->dwFontSize.Y = data.info.win_bottom - data.info.win_top + 1;
+ }
+ size -= sizeof(data.info);
+ if (size) memcpy( fontinfo->FaceName, data.face_name, size );
+ fontinfo->FaceName[size / sizeof(WCHAR)] = 0;
+ fontinfo->FontFamily = data.info.font_pitch_family;
+ fontinfo->FontWeight = data.info.font_weight;
+ return TRUE;
}
BOOL WINAPI GetCurrentConsoleFont(HANDLE hConsole, BOOL maxwindow, CONSOLE_FONT_INFO *fontinfo)
More information about the wine-cvs
mailing list