/* PUBLIC DRIVER APIS *********************************************************/
-NTSTATUS NTAPI
-ConDrvWriteConsoleOutputVDM(IN PCONSOLE Console,
- IN PTEXTMODE_SCREEN_BUFFER Buffer,
- IN PCHAR_CELL CharInfo/*Buffer*/,
- IN COORD CharInfoSize,
- IN OUT PSMALL_RECT WriteRegion,
- IN BOOLEAN DrawRegion);
NTSTATUS NTAPI
ConDrvInvalidateBitMapRect(IN PCONSOLE Console,
IN PCONSOLE_SCREEN_BUFFER Buffer,
/* Validity check */
ASSERT(Console == Buffer->Header.Console);
- /* In text-mode only, draw the VDM buffer if present */
- if (GetType(Buffer) == TEXTMODE_BUFFER)
- {
- PTEXTMODE_SCREEN_BUFFER TextBuffer = (PTEXTMODE_SCREEN_BUFFER)Buffer;
-
- /*Status =*/ ConDrvWriteConsoleOutputVDM(Buffer->Header.Console,
- TextBuffer,
- Console->VDMBuffer,
- Console->VDMBufferSize,
- Region,
- FALSE);
- }
-
/* If the output buffer is the current one, redraw the correct portion of the screen */
if (Buffer == Console->ActiveBuffer) TermDrawRegion(Console, Region);
/*
* NOTE: This function is strongly inspired by ConDrvWriteConsoleOutput...
+ * FIXME: This function MUST be moved into consrv/conoutput.c because only
+ * consrv knows how to manipulate VDM screenbuffers.
*/
NTSTATUS NTAPI
ConDrvWriteConsoleOutputVDM(IN PCONSOLE Console,
IN PTEXTMODE_SCREEN_BUFFER Buffer,
IN PCHAR_CELL CharInfo/*Buffer*/,
IN COORD CharInfoSize,
- IN OUT PSMALL_RECT WriteRegion,
- IN BOOLEAN DrawRegion)
+ IN PSMALL_RECT WriteRegion)
{
SHORT X, Y;
SMALL_RECT ScreenBuffer;
}
}
- if (DrawRegion) TermDrawRegion(Console, &CapturedWriteRegion);
-
- *WriteRegion = CapturedWriteRegion;
-
return STATUS_SUCCESS;
}
/* PUBLIC SERVER APIS *********************************************************/
+/*
+ * FIXME: This function MUST be moved fro condrv/conoutput.c because only
+ * consrv knows how to manipulate VDM screenbuffers.
+ */
+NTSTATUS NTAPI
+ConDrvWriteConsoleOutputVDM(IN PCONSOLE Console,
+ IN PTEXTMODE_SCREEN_BUFFER Buffer,
+ IN PCHAR_CELL CharInfo/*Buffer*/,
+ IN COORD CharInfoSize,
+ IN PSMALL_RECT WriteRegion);
NTSTATUS NTAPI
ConDrvInvalidateBitMapRect(IN PCONSOLE Console,
IN PCONSOLE_SCREEN_BUFFER Buffer,
&Buffer, GENERIC_READ, TRUE);
if (!NT_SUCCESS(Status)) return Status;
+ /* In text-mode only, draw the VDM buffer if present */
+ if (GetType(Buffer) == TEXTMODE_BUFFER)
+ {
+ PTEXTMODE_SCREEN_BUFFER TextBuffer = (PTEXTMODE_SCREEN_BUFFER)Buffer;
+
+ /*Status =*/ ConDrvWriteConsoleOutputVDM(Buffer->Header.Console,
+ TextBuffer,
+ Buffer->Header.Console->VDMBuffer,
+ Buffer->Header.Console->VDMBufferSize,
+ &InvalidateDIBitsRequest->Region);
+ }
+
Status = ConDrvInvalidateBitMapRect(Buffer->Header.Console,
Buffer,
&InvalidateDIBitsRequest->Region);
LONG ReferenceCount; /* Is incremented each time a handle to something in the console (a screen-buffer or the input buffer of this console) gets referenced */
CRITICAL_SECTION Lock;
- CONSOLE_STATE State; /* State of the console */
- TERMINAL TermIFace; /* Frontend-specific interface */
-
ULONG ConsoleID; /* The ID of the console */
LIST_ENTRY ListEntry; /* Entry in the list of consoles */
+ CONSOLE_STATE State; /* State of the console */
+ TERMINAL TermIFace; /* Terminal-specific interface */
+
HANDLE UnpauseEvent; /* When != NULL, event for pausing the console */
/******************************** Input buffer ********************************/