Commit 827a69f8 authored by Alexandre Julliard's avatar Alexandre Julliard

Avoid referencing stackframe.h from outside kernel32.

parent f3d99b26
......@@ -32,8 +32,8 @@
#include "ntstatus.h"
#include "thread.h" /* FIXME: must be included before winternl.h */
#include "winternl.h"
#include "wine/winbase16.h"
#include "wine/debug.h"
#include "stackframe.h"
WINE_DEFAULT_DEBUG_CHANNEL(dbghelp);
......
......@@ -31,7 +31,6 @@
#include "wownt32.h"
#include "wine/winbase16.h"
#include "wine/winuser16.h"
#include "stackframe.h"
#include "controls.h"
#include "win.h"
#include "winproc.h"
......@@ -432,9 +431,17 @@ static LRESULT WINAPI WINPROC_CallWndProc16( WNDPROC16 proc, HWND16 hwnd,
LPARAM lParam )
{
CONTEXT86 context;
LRESULT ret;
WORD args[5];
DWORD offset = 0;
size_t size = 0;
struct
{
WORD params[5];
union
{
CREATESTRUCT16 cs16;
DRAWITEMSTRUCT16 dis16;
COMPAREITEMSTRUCT16 cis16;
} u;
} args;
USER_CheckNotLock();
......@@ -461,30 +468,26 @@ static LRESULT WINAPI WINPROC_CallWndProc16( WNDPROC16 proc, HWND16 hwnd,
{
case WM_CREATE:
case WM_NCCREATE:
offset = sizeof(CREATESTRUCT16); break;
size = sizeof(CREATESTRUCT16); break;
case WM_DRAWITEM:
offset = sizeof(DRAWITEMSTRUCT16); break;
size = sizeof(DRAWITEMSTRUCT16); break;
case WM_COMPAREITEM:
offset = sizeof(COMPAREITEMSTRUCT16); break;
size = sizeof(COMPAREITEMSTRUCT16); break;
}
if (offset)
if (size)
{
void *s = MapSL(lParam);
lParam = stack16_push( offset );
memcpy( MapSL(lParam), s, offset );
memcpy( &args.u, MapSL(lParam), size );
lParam = (SEGPTR)NtCurrentTeb()->WOW32Reserved - size;
}
}
args[4] = hwnd;
args[3] = msg;
args[2] = wParam;
args[1] = HIWORD(lParam);
args[0] = LOWORD(lParam);
WOWCallback16Ex( 0, WCB16_REGS, sizeof(args), args, (DWORD *)&context );
ret = MAKELONG( LOWORD(context.Eax), LOWORD(context.Edx) );
if (offset) stack16_pop( offset );
return ret;
args.params[4] = hwnd;
args.params[3] = msg;
args.params[2] = wParam;
args.params[1] = HIWORD(lParam);
args.params[0] = LOWORD(lParam);
WOWCallback16Ex( 0, WCB16_REGS, sizeof(args.params) + size, &args, (DWORD *)&context );
return MAKELONG( LOWORD(context.Eax), LOWORD(context.Edx) );
}
......
......@@ -22,7 +22,6 @@
#include "wownt32.h"
#include "win.h"
#include "winproc.h"
#include "stackframe.h"
#include "user_private.h"
/* handle <--> handle16 conversions */
......@@ -357,7 +356,8 @@ HWND16 WINAPI GetParent16( HWND16 hwnd )
*/
BOOL16 WINAPI IsWindow16( HWND16 hwnd )
{
CURRENT_STACK16->es = USER_HeapSel;
STACK16FRAME *frame = MapSL( (SEGPTR)NtCurrentTeb()->WOW32Reserved );
frame->es = USER_HeapSel;
/* don't use WIN_Handle32 here, we don't care about the full handle */
return IsWindow( HWND_32(hwnd) );
}
......
......@@ -25,8 +25,8 @@
#include <stdlib.h>
#include "debugger.h"
#include "stackframe.h"
#include "winbase.h"
#include "wine/winbase16.h"
#include "wine/debug.h"
#include "tlhelp32.h"
......
......@@ -28,7 +28,7 @@
#include <ctype.h>
#include "thread.h"
#include "stackframe.h"
#include "wine/winbase16.h"
#include "build.h"
......
......@@ -29,7 +29,7 @@
#include <ctype.h>
#include "wine/exception.h"
#include "stackframe.h"
#include "wine/winbase16.h"
#include "module.h"
#include "build.h"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment