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