mirror of
https://github.com/reactos/reactos.git
synced 2024-12-27 09:34:43 +00:00
Fix by Hartmut Birr
Csrss inserts a '\n' after '\r' in the event queue. This extra event must be removed in CsrReadInputEvent. svn path=/trunk/; revision=4189
This commit is contained in:
parent
e0fbe100b8
commit
b70c013718
1 changed files with 22 additions and 1 deletions
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: conio.c,v 1.39 2003/01/15 00:36:10 hbirr Exp $
|
/* $Id: conio.c,v 1.40 2003/02/24 21:58:46 sedwards Exp $
|
||||||
*
|
*
|
||||||
* reactos/subsys/csrss/api/conio.c
|
* reactos/subsys/csrss/api/conio.c
|
||||||
*
|
*
|
||||||
|
@ -1305,6 +1305,27 @@ CSR_API(CsrReadInputEvent)
|
||||||
Console->WaitingChars--;
|
Console->WaitingChars--;
|
||||||
}
|
}
|
||||||
RtlFreeHeap( CsrssApiHeap, 0, Input );
|
RtlFreeHeap( CsrssApiHeap, 0, Input );
|
||||||
|
|
||||||
|
if (Console->InputEvents.Flink != &Console->InputEvents &&
|
||||||
|
Reply->Data.ReadInputReply.Input.EventType == KEY_EVENT &&
|
||||||
|
Reply->Data.ReadInputReply.Input.Event.KeyEvent.uChar.AsciiChar == '\r')
|
||||||
|
{
|
||||||
|
Input = CONTAINING_RECORD(Console->InputEvents.Flink, ConsoleInput, ListEntry);
|
||||||
|
if (Input->InputEvent.EventType == KEY_EVENT &&
|
||||||
|
Input->InputEvent.Event.KeyEvent.uChar.AsciiChar == '\n' &&
|
||||||
|
((Input->InputEvent.Event.KeyEvent.bKeyDown && Reply->Data.ReadInputReply.Input.Event.KeyEvent.bKeyDown) ||
|
||||||
|
(Input->InputEvent.Event.KeyEvent.bKeyDown==FALSE && Reply->Data.ReadInputReply.Input.Event.KeyEvent.bKeyDown==FALSE)))
|
||||||
|
{
|
||||||
|
if(Console->Mode & ENABLE_LINE_INPUT &&
|
||||||
|
Input->InputEvent.Event.KeyEvent.bKeyDown == FALSE &&
|
||||||
|
Input->InputEvent.Event.KeyEvent.uChar.AsciiChar == '\n' )
|
||||||
|
Console->WaitingLines--;
|
||||||
|
Console->WaitingChars--;
|
||||||
|
RemoveHeadList(&Console->InputEvents);
|
||||||
|
RtlFreeHeap( CsrssApiHeap, 0, Input );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Reply->Data.ReadInputReply.MoreEvents = (Console->InputEvents.Flink != &Console->InputEvents) ? TRUE : FALSE;
|
Reply->Data.ReadInputReply.MoreEvents = (Console->InputEvents.Flink != &Console->InputEvents) ? TRUE : FALSE;
|
||||||
Status = STATUS_SUCCESS;
|
Status = STATUS_SUCCESS;
|
||||||
Console->EarlyReturn = FALSE; // clear early return
|
Console->EarlyReturn = FALSE; // clear early return
|
||||||
|
|
Loading…
Reference in a new issue