Rémi Bernon : user32: Only get input codepage when needed.
Alexandre Julliard
julliard at winehq.org
Thu Mar 4 15:53:39 CST 2021
Module: wine
Branch: master
Commit: cd1b87cd6696451ca98393ac3eb4a214d0e8e9b2
URL: https://source.winehq.org/git/wine.git/?a=commit;h=cd1b87cd6696451ca98393ac3eb4a214d0e8e9b2
Author: Rémi Bernon <rbernon at codeweavers.com>
Date: Thu Mar 4 09:42:27 2021 +0100
user32: Only get input codepage when needed.
Calling get_input_codepage involves doing quite a lot of things, and
doing it for every message type, when it's not needed, is inefficient.
Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/user32/message.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/dlls/user32/message.c b/dlls/user32/message.c
index f7ce262f90d..def59998a52 100644
--- a/dlls/user32/message.c
+++ b/dlls/user32/message.c
@@ -602,7 +602,7 @@ BOOL map_wparam_AtoW( UINT message, WPARAM *wparam, enum wm_char_mapping mapping
{
char ch[2];
WCHAR wch[2];
- DWORD cp = get_input_codepage();
+ DWORD cp;
wch[0] = wch[1] = 0;
switch(message)
@@ -616,6 +616,7 @@ BOOL map_wparam_AtoW( UINT message, WPARAM *wparam, enum wm_char_mapping mapping
{
struct wm_char_mapping_data *data = get_user_thread_info()->wmchar_data;
BYTE low = LOBYTE(*wparam);
+ cp = get_input_codepage();
if (HIBYTE(*wparam))
{
@@ -662,12 +663,14 @@ BOOL map_wparam_AtoW( UINT message, WPARAM *wparam, enum wm_char_mapping mapping
case WM_SYSCHAR:
case WM_SYSDEADCHAR:
case WM_MENUCHAR:
+ cp = get_input_codepage();
ch[0] = LOBYTE(*wparam);
ch[1] = HIBYTE(*wparam);
MultiByteToWideChar( cp, 0, ch, 2, wch, 2 );
*wparam = MAKEWPARAM(wch[0], wch[1]);
break;
case WM_IME_CHAR:
+ cp = get_input_codepage();
ch[0] = HIBYTE(*wparam);
ch[1] = LOBYTE(*wparam);
if (ch[0]) MultiByteToWideChar( cp, 0, ch, 2, wch, 2 );
@@ -689,13 +692,14 @@ static void map_wparam_WtoA( MSG *msg, BOOL remove )
BYTE ch[4];
WCHAR wch[2];
DWORD len;
- DWORD cp = get_input_codepage();
+ DWORD cp;
switch(msg->message)
{
case WM_CHAR:
if (!HIWORD(msg->wParam))
{
+ cp = get_input_codepage();
wch[0] = LOWORD(msg->wParam);
ch[0] = ch[1] = 0;
len = WideCharToMultiByte( cp, 0, wch, 1, (LPSTR)ch, 2, NULL, NULL );
@@ -723,6 +727,7 @@ static void map_wparam_WtoA( MSG *msg, BOOL remove )
case WM_SYSCHAR:
case WM_SYSDEADCHAR:
case WM_MENUCHAR:
+ cp = get_input_codepage();
wch[0] = LOWORD(msg->wParam);
wch[1] = HIWORD(msg->wParam);
ch[0] = ch[1] = 0;
@@ -730,6 +735,7 @@ static void map_wparam_WtoA( MSG *msg, BOOL remove )
msg->wParam = MAKEWPARAM( ch[0] | (ch[1] << 8), 0 );
break;
case WM_IME_CHAR:
+ cp = get_input_codepage();
wch[0] = LOWORD(msg->wParam);
ch[0] = ch[1] = 0;
len = WideCharToMultiByte( cp, 0, wch, 1, (LPSTR)ch, 2, NULL, NULL );
More information about the wine-cvs
mailing list