Real mode context should always have V86 flag turned on.

Entering protected mode uses simpler and more robust virtual interrupt
flag check.
Mouse events are now received in graphics modes.
Improved tracing output of int33 handler.
This commit is contained in:
Jukka Heinonen 2003-07-08 21:11:52 +00:00 committed by Alexandre Julliard
parent 119eacc6d3
commit 4ef7ba7247
5 changed files with 11 additions and 12 deletions

View file

@ -572,6 +572,9 @@ static WINE_EXCEPTION_FILTER(exception_handler)
int WINAPI DOSVM_Enter( CONTEXT86 *context )
{
/* Some callers forget to turn V86_FLAG on. */
context->EFlags |= V86_FLAG;
__TRY
{
__wine_enter_vm86( context );

View file

@ -175,6 +175,7 @@ void DOSVM_InitSegments( void )
0x5D, /* popw %bp */
0x5A, /* popw %dx */
0x58, /* popw %ax */
0xfb, /* sti, enable and check virtual interrupts */
0xCB /* lret */
};

View file

@ -583,15 +583,6 @@ static void StartPM( CONTEXT86 *context )
TRACE("DOS program is now entering %d-bit protected mode\n",
DOSVM_IsDos32() ? 32 : 16);
/*
* Enable interrupts. Note that we also make a dummy
* relay call in order to process all pending events.
* This is needed in order to prevent event handling from
* getting stuck.
*/
NtCurrentTeb()->dpmi_vif = 1;
DOSVM_BuildCallFrame( context, NULL, NULL );
__TRY
{
wine_call_to_16_regs_short(&pm_ctx, 0);

View file

@ -91,10 +91,12 @@ void WINAPI DOSVM_Int33Handler( CONTEXT86 *context )
SET_AX( context, mouse_info.but );
break;
case 0x07:
FIXME("Define horizontal mouse cursor range\n");
FIXME("Define horizontal mouse cursor range %d..%d\n",
CX_reg(context), DX_reg(context));
break;
case 0x08:
FIXME("Define vertical mouse cursor range\n");
FIXME("Define vertical mouse cursor range %d..%d\n",
CX_reg(context), DX_reg(context));
break;
case 0x09:
FIXME("Define graphics mouse cursor\n");

View file

@ -381,7 +381,9 @@ static void WINAPI VGA_DoSetMode(ULONG_PTR arg)
return;
}
if (!vga_hwnd) {
vga_hwnd = CreateWindowExA(0,"STATIC","WINEDOS VGA",WS_POPUP|WS_VISIBLE,0,0,par->Xres,par->Yres,0,0,0,NULL);
vga_hwnd = CreateWindowExA(0,"STATIC","WINEDOS VGA",
WS_POPUP|WS_VISIBLE|SS_NOTIFY,0,0,
par->Xres,par->Yres,0,0,0,NULL);
if (!vga_hwnd) {
ERR("Failed to create user window.\n");
IDirectDraw_Release(lpddraw);