mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 08:25:03 +00:00
[CONSRV] Some code simplification and tidy up.
This commit is contained in:
parent
31c13e89fe
commit
7babd93107
10 changed files with 50 additions and 44 deletions
|
@ -79,24 +79,21 @@ RemoveConsole(IN PCONSOLE Console)
|
|||
VOID NTAPI
|
||||
ConDrvPause(PCONSOLE Console)
|
||||
{
|
||||
/* In case we already have a pause event, just exit... */
|
||||
if (Console->UnpauseEvent) return;
|
||||
/* In case we are already paused, just exit... */
|
||||
if (Console->ConsolePaused) return;
|
||||
|
||||
/* ... otherwise create it */
|
||||
NtCreateEvent(&Console->UnpauseEvent, EVENT_ALL_ACCESS,
|
||||
NULL, NotificationEvent, FALSE);
|
||||
/* ... otherwise set the flag */
|
||||
Console->ConsolePaused = TRUE;
|
||||
}
|
||||
|
||||
VOID NTAPI
|
||||
ConDrvUnpause(PCONSOLE Console)
|
||||
{
|
||||
/* In case we already freed the event, just exit... */
|
||||
if (!Console->UnpauseEvent) return;
|
||||
/* In case we are already unpaused, just exit... */
|
||||
if (!Console->ConsolePaused) return;
|
||||
|
||||
/* ... otherwise set and free it */
|
||||
NtSetEvent(Console->UnpauseEvent, NULL);
|
||||
NtClose(Console->UnpauseEvent);
|
||||
Console->UnpauseEvent = NULL;
|
||||
/* ... otherwise reset the flag */
|
||||
Console->ConsolePaused = FALSE;
|
||||
}
|
||||
|
||||
|
||||
|
@ -248,7 +245,7 @@ ConDrvInitConsole(OUT PCONSOLE* NewConsole,
|
|||
}
|
||||
/* Make the new screen buffer active */
|
||||
Console->ActiveBuffer = NewBuffer;
|
||||
Console->UnpauseEvent = NULL;
|
||||
Console->ConsolePaused = FALSE;
|
||||
|
||||
DPRINT("Console initialized\n");
|
||||
|
||||
|
@ -409,7 +406,7 @@ ConDrvDeleteConsole(IN PCONSOLE Console)
|
|||
/* Deinitialize the input buffer */
|
||||
ConDrvDeinitInputBuffer(Console);
|
||||
|
||||
if (Console->UnpauseEvent) NtClose(Console->UnpauseEvent);
|
||||
Console->ConsolePaused = FALSE;
|
||||
|
||||
DPRINT("ConDrvDeleteConsole - Unlocking\n");
|
||||
LeaveCriticalSection(&Console->Lock);
|
||||
|
|
|
@ -61,7 +61,7 @@ DummyWriteStream(IN OUT PTERMINAL This,
|
|||
*/
|
||||
|
||||
// /* Stop here if the console is paused */
|
||||
// if (Console->UnpauseEvent != NULL) return STATUS_PENDING;
|
||||
// if (Console->ConsolePaused) return STATUS_PENDING;
|
||||
|
||||
return STATUS_PENDING;
|
||||
}
|
||||
|
|
|
@ -228,7 +228,6 @@ GRAPHICS_BUFFER_Initialize(OUT PCONSOLE_SCREEN_BUFFER* Buffer,
|
|||
}
|
||||
|
||||
NewBuffer->ViewOrigin.X = NewBuffer->ViewOrigin.Y = 0;
|
||||
NewBuffer->VirtualY = 0;
|
||||
|
||||
NewBuffer->CursorBlinkOn = FALSE;
|
||||
NewBuffer->ForceCursorOff = TRUE;
|
||||
|
|
|
@ -793,7 +793,7 @@ ConDrvWriteConsole(IN PCONSOLE Console,
|
|||
ASSERT((StringBuffer != NULL) || (StringBuffer == NULL && NumCharsToWrite == 0));
|
||||
|
||||
/* Stop here if the console is paused */
|
||||
if (Console->UnpauseEvent != NULL) return STATUS_PENDING;
|
||||
if (Console->ConsolePaused) return STATUS_PENDING;
|
||||
|
||||
/* Convert the string to UNICODE */
|
||||
if (Unicode)
|
||||
|
|
|
@ -202,6 +202,31 @@ ConioProcessInputEvent(PCONSRV_CONSOLE Console,
|
|||
PINPUT_RECORD InputEvent)
|
||||
{
|
||||
ULONG NumEventsWritten;
|
||||
|
||||
if (InputEvent->EventType == KEY_EVENT)
|
||||
{
|
||||
BOOL Down = InputEvent->Event.KeyEvent.bKeyDown;
|
||||
UINT VirtualKeyCode = InputEvent->Event.KeyEvent.wVirtualKeyCode;
|
||||
DWORD ShiftState = InputEvent->Event.KeyEvent.dwControlKeyState;
|
||||
|
||||
/* Process Ctrl-C and Ctrl-Break */
|
||||
if ( (GetConsoleInputBufferMode(Console) & ENABLE_PROCESSED_INPUT) &&
|
||||
Down && (VirtualKeyCode == VK_PAUSE || VirtualKeyCode == 'C') &&
|
||||
(ShiftState & (LEFT_CTRL_PRESSED | RIGHT_CTRL_PRESSED)) )
|
||||
{
|
||||
DPRINT1("Console_Api Ctrl-C\n");
|
||||
ConSrvConsoleProcessCtrlEvent(Console, 0, CTRL_C_EVENT);
|
||||
|
||||
if (Console->LineBuffer && !Console->LineComplete)
|
||||
{
|
||||
/* Line input is in progress; end it */
|
||||
Console->LinePos = Console->LineSize = 0;
|
||||
Console->LineComplete = TRUE;
|
||||
}
|
||||
return STATUS_SUCCESS; // STATUS_CONTROL_C_EXIT;
|
||||
}
|
||||
}
|
||||
|
||||
return ConioAddInputEvents(Console,
|
||||
InputEvent,
|
||||
1,
|
||||
|
|
|
@ -206,7 +206,7 @@ CSR_API(SrvCreateConsoleScreenBuffer)
|
|||
TEXTMODE_BUFFER_INFO TextModeInfo = {{80, 25},
|
||||
{80, 25},
|
||||
DEFAULT_SCREEN_ATTRIB,
|
||||
DEFAULT_POPUP_ATTRIB ,
|
||||
DEFAULT_POPUP_ATTRIB,
|
||||
TRUE,
|
||||
CSR_DEFAULT_CURSOR_SIZE};
|
||||
GRAPHICS_BUFFER_INFO GraphicsInfo;
|
||||
|
|
|
@ -240,14 +240,14 @@ ConsoleFreeUnicodeString(IN PUNICODE_STRING UnicodeString)
|
|||
}
|
||||
|
||||
VOID
|
||||
ConioPause(PCONSRV_CONSOLE Console, UINT Flags)
|
||||
ConioPause(PCONSRV_CONSOLE Console, UCHAR Flags)
|
||||
{
|
||||
Console->PauseFlags |= Flags;
|
||||
ConDrvPause((PCONSOLE)Console);
|
||||
}
|
||||
|
||||
VOID
|
||||
ConioUnpause(PCONSRV_CONSOLE Console, UINT Flags)
|
||||
ConioUnpause(PCONSRV_CONSOLE Console, UCHAR Flags)
|
||||
{
|
||||
Console->PauseFlags &= ~Flags;
|
||||
|
||||
|
|
|
@ -34,17 +34,20 @@ ConioGetShiftState(PBYTE KeyState, LPARAM lParam)
|
|||
ssOut |= SCROLLLOCK_ON;
|
||||
|
||||
if (KeyState[VK_SHIFT] & 0x80)
|
||||
// || (KeyState[VK_LSHIFT] & 0x80) || (KeyState[VK_RSHIFT] & 0x80)
|
||||
ssOut |= SHIFT_PRESSED;
|
||||
|
||||
if (KeyState[VK_LCONTROL] & 0x80)
|
||||
ssOut |= LEFT_CTRL_PRESSED;
|
||||
if (KeyState[VK_RCONTROL] & 0x80)
|
||||
ssOut |= RIGHT_CTRL_PRESSED;
|
||||
// if (KeyState[VK_CONTROL] & 0x80) { ... }
|
||||
|
||||
if (KeyState[VK_LMENU] & 0x80)
|
||||
ssOut |= LEFT_ALT_PRESSED;
|
||||
if (KeyState[VK_RMENU] & 0x80)
|
||||
ssOut |= RIGHT_ALT_PRESSED;
|
||||
// if (KeyState[VK_MENU] & 0x80) { ... }
|
||||
|
||||
/* See WM_CHAR MSDN documentation for instance */
|
||||
if (lParam & 0x01000000)
|
||||
|
@ -124,23 +127,6 @@ ConioProcessKey(PCONSRV_CONSOLE Console, MSG* msg)
|
|||
|
||||
if (Fake) return;
|
||||
|
||||
/* Process Ctrl-C and Ctrl-Break */
|
||||
if ( (GetConsoleInputBufferMode(Console) & ENABLE_PROCESSED_INPUT) &&
|
||||
Down && (VirtualKeyCode == VK_PAUSE || VirtualKeyCode == 'C') &&
|
||||
(ShiftState & (LEFT_CTRL_PRESSED | RIGHT_CTRL_PRESSED) || KeyState[VK_CONTROL] & 0x80) )
|
||||
{
|
||||
DPRINT1("Console_Api Ctrl-C\n");
|
||||
ConSrvConsoleProcessCtrlEvent(Console, 0, CTRL_C_EVENT);
|
||||
|
||||
if (Console->LineBuffer && !Console->LineComplete)
|
||||
{
|
||||
/* Line input is in progress; end it */
|
||||
Console->LinePos = Console->LineSize = 0;
|
||||
Console->LineComplete = TRUE;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
// FIXME: Scrolling via keyboard shortcuts must be done differently,
|
||||
// without touching the internal VirtualY variable.
|
||||
|
|
|
@ -93,8 +93,6 @@ struct _CONSOLE_SCREEN_BUFFER
|
|||
COORD ViewOrigin; /* Beginning offset for the actual display area */
|
||||
|
||||
/***** Put that VV in TEXTMODE_SCREEN_BUFFER ?? *****/
|
||||
USHORT VirtualY; /* Top row of buffer being displayed, reported to callers */
|
||||
|
||||
COORD CursorPosition; /* Current cursor position */
|
||||
BOOLEAN CursorBlinkOn;
|
||||
BOOLEAN ForceCursorOff;
|
||||
|
@ -152,6 +150,7 @@ typedef struct _TEXTMODE_SCREEN_BUFFER
|
|||
{
|
||||
CONSOLE_SCREEN_BUFFER; /* Screen buffer base class - MUST BE IN FIRST PLACE */
|
||||
|
||||
USHORT VirtualY; /* Top row of buffer being displayed, reported to callers */
|
||||
PCHAR_INFO Buffer; /* Pointer to UNICODE screen buffer (Buffer->Char.UnicodeChar only is valid, not Char.AsciiChar) */
|
||||
|
||||
USHORT ScreenDefaultAttrib; /* Default screen char attribute */
|
||||
|
@ -333,7 +332,7 @@ typedef struct _CONSOLE
|
|||
CONSOLE_STATE State; /* State of the console */
|
||||
TERMINAL TermIFace; /* Terminal-specific interface */
|
||||
|
||||
HANDLE UnpauseEvent; /* When != NULL, event for pausing the console */
|
||||
BOOLEAN ConsolePaused; /* If TRUE, the console is paused */
|
||||
|
||||
/******************************** Input buffer ********************************/
|
||||
CONSOLE_INPUT_BUFFER InputBuffer; /* Input buffer of the console */
|
||||
|
@ -367,7 +366,7 @@ ConSrvConsoleCtrlEvent(IN ULONG CtrlEvent,
|
|||
|
||||
/* conoutput.c */
|
||||
PCHAR_INFO ConioCoordToPointer(PTEXTMODE_SCREEN_BUFFER Buff, ULONG X, ULONG Y);
|
||||
NTSTATUS ConioResizeBuffer(PCONSOLE /*PCONSRV_CONSOLE*/ Console,
|
||||
NTSTATUS ConioResizeBuffer(PCONSOLE Console,
|
||||
PTEXTMODE_SCREEN_BUFFER ScreenBuffer,
|
||||
COORD Size);
|
||||
|
||||
|
|
|
@ -152,7 +152,7 @@ typedef struct _WINSRV_CONSOLE
|
|||
BOOLEAN HasFocus; /* TRUE if the console has focus (is in the foreground) */
|
||||
|
||||
/******************************* Pausing support ******************************/
|
||||
BYTE PauseFlags;
|
||||
UCHAR PauseFlags;
|
||||
LIST_ENTRY ReadWaitQueue; /* List head for the queue of unique input buffer read wait blocks */
|
||||
LIST_ENTRY WriteWaitQueue; /* List head for the queue of current screen-buffer write wait blocks */
|
||||
|
||||
|
@ -197,8 +197,8 @@ typedef struct _WINSRV_CONSOLE
|
|||
} WINSRV_CONSOLE; // , *PWINSRV_CONSOLE;
|
||||
|
||||
/* console.c */
|
||||
VOID ConioPause(PCONSRV_CONSOLE Console, UINT Flags);
|
||||
VOID ConioUnpause(PCONSRV_CONSOLE Console, UINT Flags);
|
||||
VOID ConioPause(PCONSRV_CONSOLE Console, UCHAR Flags);
|
||||
VOID ConioUnpause(PCONSRV_CONSOLE Console, UCHAR Flags);
|
||||
|
||||
PCONSOLE_PROCESS_DATA NTAPI
|
||||
ConSrvGetConsoleLeaderProcess(IN PCONSRV_CONSOLE Console);
|
||||
|
@ -227,7 +227,7 @@ ConioProcessInputEvent(PCONSRV_CONSOLE Console,
|
|||
|
||||
/* conoutput.c */
|
||||
PCHAR_INFO ConioCoordToPointer(PTEXTMODE_SCREEN_BUFFER Buff, ULONG X, ULONG Y);
|
||||
NTSTATUS ConioResizeBuffer(PCONSOLE /*PCONSRV_CONSOLE*/ Console,
|
||||
NTSTATUS ConioResizeBuffer(PCONSOLE Console,
|
||||
PTEXTMODE_SCREEN_BUFFER ScreenBuffer,
|
||||
COORD Size);
|
||||
|
||||
|
|
Loading…
Reference in a new issue