* pollkey fixes (merged)

This commit is contained in:
peter 2001-10-12 16:03:15 +00:00
parent 5beb1658ce
commit 9d93d0d4e3
3 changed files with 58 additions and 20 deletions

View File

@ -105,8 +105,11 @@ begin
exit(PendingKeyEvent); exit(PendingKeyEvent);
If Assigned(CurrentKeyBoardDriver.PollKeyEvent) Then If Assigned(CurrentKeyBoardDriver.PollKeyEvent) Then
begin begin
PendingKeyEvent:=CurrentKeyBoardDriver.PollKeyEvent(); PollKeyEvent:=CurrentKeyBoardDriver.PollKeyEvent();
PollKeyEvent:=PendingKeyEvent; // PollKeyEvent:=PendingKeyEvent;
// Must be done inside every keyboard specific
// PollKeyEvent procedure
// to avoid problems if that procedure is called directly PM
end end
else else
PollKeyEvent:=0; PollKeyEvent:=0;
@ -117,7 +120,7 @@ Function SetKeyboardDriver (Const Driver : TKeyboardDriver) : Boolean;
begin begin
If Not KeyBoardInitialized then If Not KeyBoardInitialized then
CurrentKeyBoardDriver:=Driver; CurrentKeyBoardDriver:=Driver;
SetKeyboardDriver:=Not KeyBoardInitialized; SetKeyboardDriver:=Not KeyBoardInitialized;
end; end;
Procedure GetKeyboardDriver (Var Driver : TKeyboardDriver); Procedure GetKeyboardDriver (Var Driver : TKeyboardDriver);
@ -292,7 +295,10 @@ end;
{ {
$Log$ $Log$
Revision 1.5 2001-10-10 20:19:00 michael Revision 1.6 2001-10-12 16:03:15 peter
* pollkey fixes (merged)
Revision 1.5 2001/10/10 20:19:00 michael
+ Merge of Fixed PollKeyEvent - Pierres fix was not complete + Merge of Fixed PollKeyEvent - Pierres fix was not complete
Revision 1.4 2001/10/03 20:08:36 michael Revision 1.4 2001/10/03 20:08:36 michael

View File

@ -35,16 +35,23 @@ end;
Var Var
CurrentVideoDriver : TVideoDriver; CurrentVideoDriver : TVideoDriver;
NextVideoMode : TVideoMode;
Const Const
VideoInitialized : Boolean = False; VideoInitialized : Boolean = False;
DriverInitialized : Boolean = False;
NextVideoModeSet : Boolean = False;
Function SetVideoDriver (Const Driver : TVideoDriver) : Boolean; Function SetVideoDriver (Const Driver : TVideoDriver) : Boolean;
{ Sets the videodriver to be used } { Sets the videodriver to be used }
begin begin
If Not VideoInitialized then If Not VideoInitialized then
Begin
CurrentVideoDriver:=Driver; CurrentVideoDriver:=Driver;
SetVideoDriver:=Not VideoInitialized; DriverInitialized:=true;
NextVideoModeSet:=false;
End;
SetVideoDriver:=Not VideoInitialized;
end; end;
Procedure GetVideoDriver (Var Driver : TVideoDriver); Procedure GetVideoDriver (Var Driver : TVideoDriver);
@ -86,17 +93,17 @@ begin
If (ScreenWidth<OldCols) then If (ScreenWidth<OldCols) then
C:=ScreenWidth C:=ScreenWidth
else else
C:=OldCols; C:=OldCols;
If (ScreenHeight<OldRows) then If (ScreenHeight<OldRows) then
R:=ScreenHeight R:=ScreenHeight
else else
R:=OldRows; R:=OldRows;
For I:=0 to R-1 do For I:=0 to R-1 do
begin begin
Move(VideoBuf[I*S*OldCols],NewVideoBuf[I*S*ScreenWidth],S*C); Move(VideoBuf^[I*OldCols],NewVideoBuf^[I*ScreenWidth],S*C);
Move(OldVideoBuf[I*S*OldCols],NewOldVideoBuf[I*S*ScreenWidth],S*C); Move(OldVideoBuf^[I*OldCols],NewOldVideoBuf^[I*ScreenWidth],S*C);
end; end;
end; end;
FreeVideoBuf; FreeVideoBuf;
VideoBufSize:=NewVideoBufSize; VideoBufSize:=NewVideoBufSize;
VideoBuf:=NewVideoBuf; VideoBuf:=NewVideoBuf;
@ -110,6 +117,10 @@ begin
begin begin
If Assigned(CurrentVideoDriver.InitDriver) then If Assigned(CurrentVideoDriver.InitDriver) then
CurrentVideoDriver.InitDriver; CurrentVideoDriver.InitDriver;
VideoInitialized:=True;
if NextVideoModeSet then
SetVideoMode(NextVideoMode)
else
AssignVideoBuf(0,0); AssignVideoBuf(0,0);
ClearScreen; ClearScreen;
end; end;
@ -123,7 +134,7 @@ begin
begin begin
If Assigned(CurrentVideoDriver.DoneDriver) then If Assigned(CurrentVideoDriver.DoneDriver) then
CurrentVideoDriver.DoneDriver; CurrentVideoDriver.DoneDriver;
FreeVideoBuf; FreeVideoBuf;
VideoInitialized:=False; VideoInitialized:=False;
end; end;
end; end;
@ -198,6 +209,11 @@ Var
OldR,OldC: Word; OldR,OldC: Word;
begin begin
SetVideoMode:=DriverInitialized;
if not DriverInitialized then
exit;
If VideoInitialized then
begin
OldC:=ScreenWidth; OldC:=ScreenWidth;
OldR:=ScreenHeight; OldR:=ScreenHeight;
If Assigned(CurrentVideoDriver.SetVideoMode) then If Assigned(CurrentVideoDriver.SetVideoMode) then
@ -207,6 +223,12 @@ begin
// Assign buffer // Assign buffer
If SetVideoMode then If SetVideoMode then
AssignVideoBuf(OldC,Oldr); AssignVideoBuf(OldC,Oldr);
end
else
begin
NextVideoMode:=Mode;
NextVideoModeSet:=true;
end;
end; end;
@ -214,7 +236,7 @@ Function GetVideoModeCount : Word;
begin begin
If Assigned(CurrentVideoDriver.GetVideoModeCount) then If Assigned(CurrentVideoDriver.GetVideoModeCount) then
GetVideoModeCount:=GetVideoModeCount() GetVideoModeCount:=CurrentVideoDriver.GetVideoModeCount()
else else
GetVideoModeCount:=1; GetVideoModeCount:=1;
end; end;
@ -239,11 +261,12 @@ begin
DefaultErrorHandler := errAbort; { return error code } DefaultErrorHandler := errAbort; { return error code }
end; end;
{ {
$Log$ $Log$
Revision 1.5 2001-10-10 21:03:48 michael Revision 1.6 2001-10-12 16:03:15 peter
* pollkey fixes (merged)
Revision 1.5 2001/10/10 21:03:48 michael
+ Clearscreen now also clears oldvideobuf after screenupdate + Clearscreen now also clears oldvideobuf after screenupdate
Revision 1.4 2001/10/06 22:28:24 michael Revision 1.4 2001/10/06 22:28:24 michael

View File

@ -1483,9 +1483,15 @@ end;
function SysPollKeyEvent: TKeyEvent; function SysPollKeyEvent: TKeyEvent;
var
KeyEvent : TKeyEvent;
begin begin
if keypressed then if keypressed then
SysPollKeyEvent:=SysGetKeyEvent begin
KeyEvent:=SysGetKeyEvent;
PutKeyEvent(KeyEvent);
SysPollKeyEvent:=KeyEvent
end
else else
SysPollKeyEvent:=0; SysPollKeyEvent:=0;
end; end;
@ -1498,11 +1504,11 @@ end;
procedure RestoreStartMode; procedure RestoreStartMode;
begin begin
TCSetAttr(1,TCSANOW,StartTio); TCSetAttr(1,TCSANOW,StartTio);
end; end;
Const Const
SysKeyboardDriver : TKeyboardDriver = ( SysKeyboardDriver : TKeyboardDriver = (
InitDriver : @SysInitKeyBoard; InitDriver : @SysInitKeyBoard;
@ -1511,16 +1517,19 @@ Const
PollKeyEvent : @SysPollKeyEvent; PollKeyEvent : @SysPollKeyEvent;
GetShiftState : @SysGetShiftState; GetShiftState : @SysGetShiftState;
TranslateKeyEvent : Nil; TranslateKeyEvent : Nil;
TranslateKeyEventUnicode : Nil; TranslateKeyEventUnicode : Nil;
); );
begin begin
SetKeyBoardDriver(SysKeyBoardDriver); SetKeyBoardDriver(SysKeyBoardDriver);
TCGetAttr(1,StartTio); TCGetAttr(1,StartTio);
end. end.
{ {
$Log$ $Log$
Revision 1.8 2001-09-21 21:33:36 michael Revision 1.9 2001-10-12 16:03:15 peter
* pollkey fixes (merged)
Revision 1.8 2001/09/21 21:33:36 michael
+ Merged driver support from fixbranch + Merged driver support from fixbranch
Revision 1.7 2001/08/30 20:55:08 peter Revision 1.7 2001/08/30 20:55:08 peter