Fixes winproc deadlock for win16.

This commit is contained in:
Ove Kaaven 1999-05-04 15:23:26 +00:00 committed by Alexandre Julliard
parent 8c38f45a7e
commit dc8cf1002c

View File

@ -269,6 +269,7 @@ static LRESULT WINAPI THUNK_CallWndProc16( WNDPROC16 proc, HWND16 hwnd,
WND *wndPtr = WIN_FindWndPtr( hwnd ); WND *wndPtr = WIN_FindWndPtr( hwnd );
DWORD offset = 0; DWORD offset = 0;
THDB *thdb = THREAD_Current(); THDB *thdb = THREAD_Current();
int iWndsLocks;
/* Window procedures want ax = hInstance, ds = es = ss */ /* Window procedures want ax = hInstance, ds = es = ss */
@ -309,6 +310,8 @@ static LRESULT WINAPI THUNK_CallWndProc16( WNDPROC16 proc, HWND16 hwnd,
} }
} }
iWndsLocks = WIN_SuspendWndsLock();
args = (WORD *)THREAD_STACK16(thdb) - 5; args = (WORD *)THREAD_STACK16(thdb) - 5;
args[0] = LOWORD(lParam); args[0] = LOWORD(lParam);
args[1] = HIWORD(lParam); args[1] = HIWORD(lParam);
@ -318,6 +321,9 @@ static LRESULT WINAPI THUNK_CallWndProc16( WNDPROC16 proc, HWND16 hwnd,
ret = CallTo16_sreg_( &context, 5 * sizeof(WORD) ); ret = CallTo16_sreg_( &context, 5 * sizeof(WORD) );
if (offset) STACK16_POP( thdb, offset ); if (offset) STACK16_POP( thdb, offset );
WIN_RestoreWndsLock(iWndsLocks);
return ret; return ret;
} }