Alexandre Julliard : user: Added fast 32->16 mapping for WM_GETTEXT,
WM_SETTEXT and similar messages.
Alexandre Julliard
julliard at wine.codeweavers.com
Fri May 26 13:55:02 CDT 2006
Module: wine
Branch: refs/heads/master
Commit: 8e92e5369f986c792443631f45aa1d162c5bae9f
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=8e92e5369f986c792443631f45aa1d162c5bae9f
Author: Alexandre Julliard <julliard at winehq.org>
Date: Fri May 26 14:14:14 2006 +0200
user: Added fast 32->16 mapping for WM_GETTEXT, WM_SETTEXT and similar messages.
---
dlls/user/winproc.c | 47 ++++++++++++-----------------------------------
1 files changed, 12 insertions(+), 35 deletions(-)
diff --git a/dlls/user/winproc.c b/dlls/user/winproc.c
index 28eebb4..da6e050 100644
--- a/dlls/user/winproc.c
+++ b/dlls/user/winproc.c
@@ -964,16 +964,6 @@ static INT WINPROC_MapMsg32ATo16( HWND h
*plparam = MAKELPARAM( (HWND16)*plparam,
(WORD)msg32 - WM_CTLCOLORMSGBOX );
return 0;
- case WM_GETTEXT:
- case WM_ASKCBFORMATNAME:
- {
- LPARAM *str; /* store LPARAM, then *pwparam16 char space */
- *pwparam16 = (WPARAM16)min( wParam32, 0xff80 ); /* Must be < 64K */
- if (!(str = HeapAlloc( GetProcessHeap(), 0, *pwparam16 + sizeof(LPARAM)))) return -1;
- *str++ = *plparam; /* Store the previous lParam */
- *plparam = MapLS( str );
- }
- return 1;
case WM_MENUSELECT:
if(HIWORD(wParam32) & MF_POPUP)
{
@@ -993,14 +983,6 @@ static INT WINPROC_MapMsg32ATo16( HWND h
*plparam = MAKELPARAM( (HWND16)*plparam, HIWORD(wParam32));
/* else nothing to do */
return 0;
- case WM_NOTIFY:
- *plparam = MapLS( (NMHDR *)*plparam ); /* NMHDR is already 32-bit */
- return 1;
- case WM_SETTEXT:
- case WM_WININICHANGE:
- case WM_DEVMODECHANGE:
- *plparam = MapLS( (LPSTR)*plparam );
- return 1;
case WM_ACTIVATEAPP:
if (*plparam) *plparam = HTASK_16( (HANDLE)*plparam );
return 0;
@@ -1062,9 +1044,6 @@ static void WINPROC_UnmapMsg32ATo16( HWN
case CB_SELECTSTRING:
case CB_DIR:
case CB_GETLBTEXT:
- case WM_SETTEXT:
- case WM_WININICHANGE:
- case WM_DEVMODECHANGE:
UnMapLS( (SEGPTR)lParam16 );
break;
case LB_SETTABSTOPS:
@@ -1106,20 +1085,6 @@ static void WINPROC_UnmapMsg32ATo16( HWN
if( lParam )
*((PUINT)(lParam)) = HIWORD(*result); /* FIXME: substract 1? */
break;
-
- case WM_GETTEXT:
- case WM_ASKCBFORMATNAME:
- {
- LPSTR str = MapSL(lParam16);
- UnMapLS( lParam16 );
- lParam16 = *((LPARAM *)str - 1);
- lstrcpynA( (LPSTR)lParam16, str, wParam16 );
- HeapFree( GetProcessHeap(), 0, (LPARAM *)str - 1 );
- }
- break;
- case WM_NOTIFY:
- UnMapLS(lParam16);
- break;
}
}
@@ -2222,6 +2187,18 @@ LRESULT WINPROC_CallProc32ATo16( winproc
*result = 0;
}
break;
+ case WM_GETTEXT:
+ case WM_ASKCBFORMATNAME:
+ wParam = min( wParam, 0xff80 ); /* Must be < 64K */
+ /* fall through */
+ case WM_NOTIFY:
+ case WM_SETTEXT:
+ case WM_WININICHANGE:
+ case WM_DEVMODECHANGE:
+ lParam = MapLS( (void *)lParam );
+ ret = callback( HWND_16(hwnd), msg, wParam, lParam, result, arg );
+ UnMapLS( lParam );
+ break;
case WM_DDE_INITIATE:
case WM_DDE_TERMINATE:
case WM_DDE_UNADVISE:
More information about the wine-cvs
mailing list