static INT VdmMenuPos = -1;
static BOOLEAN ShowPointer = FALSE;
+HANDLE VdmTaskEvent = NULL;
+
/*
* Those menu helpers were taken from the GUI frontend in winsrv.dll
*/
}
case CTRL_LAST_CLOSE_EVENT:
{
- if (!VdmRunning)
+ if (WaitForSingleObject(VdmTaskEvent, 0) == WAIT_TIMEOUT)
{
/* Exit immediately */
if (CommandThread) TerminateThread(CommandThread, 0);
+ EmulatorTerminate();
}
else
{
while (VdmRunning)
{
+ /* Make sure the task event is signaled */
+ WaitForSingleObject(VdmTaskEvent, INFINITE);
+
/* Wait for an input record */
if (!ReadConsoleInput(ConsoleInput, &InputRecord, 1, &Count))
{
}
/* Start simulation */
+ SetEvent(VdmTaskEvent);
EmulatorSimulate();
/* Perform another screen refresh */
DPRINT1("\n\n\nNTVDM - Starting...\n\n\n");
+ /* Create the task event */
+ VdmTaskEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
+ ASSERT(VdmTaskEvent != NULL);
+
/* Initialize the console */
if (!ConsoleInit())
{
}
/* Start simulation */
+ SetEvent(VdmTaskEvent);
EmulatorSimulate();
/* Perform another screen refresh */