mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-19 23:19:24 +02:00
* pollkey fixes (merged)
This commit is contained in:
parent
5beb1658ce
commit
9d93d0d4e3
@ -105,8 +105,11 @@ begin
|
||||
exit(PendingKeyEvent);
|
||||
If Assigned(CurrentKeyBoardDriver.PollKeyEvent) Then
|
||||
begin
|
||||
PendingKeyEvent:=CurrentKeyBoardDriver.PollKeyEvent();
|
||||
PollKeyEvent:=PendingKeyEvent;
|
||||
PollKeyEvent:=CurrentKeyBoardDriver.PollKeyEvent();
|
||||
// PollKeyEvent:=PendingKeyEvent;
|
||||
// Must be done inside every keyboard specific
|
||||
// PollKeyEvent procedure
|
||||
// to avoid problems if that procedure is called directly PM
|
||||
end
|
||||
else
|
||||
PollKeyEvent:=0;
|
||||
@ -117,7 +120,7 @@ Function SetKeyboardDriver (Const Driver : TKeyboardDriver) : Boolean;
|
||||
begin
|
||||
If Not KeyBoardInitialized then
|
||||
CurrentKeyBoardDriver:=Driver;
|
||||
SetKeyboardDriver:=Not KeyBoardInitialized;
|
||||
SetKeyboardDriver:=Not KeyBoardInitialized;
|
||||
end;
|
||||
|
||||
Procedure GetKeyboardDriver (Var Driver : TKeyboardDriver);
|
||||
@ -292,7 +295,10 @@ end;
|
||||
|
||||
{
|
||||
$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
|
||||
|
||||
Revision 1.4 2001/10/03 20:08:36 michael
|
||||
|
@ -35,16 +35,23 @@ end;
|
||||
|
||||
Var
|
||||
CurrentVideoDriver : TVideoDriver;
|
||||
NextVideoMode : TVideoMode;
|
||||
|
||||
Const
|
||||
VideoInitialized : Boolean = False;
|
||||
DriverInitialized : Boolean = False;
|
||||
NextVideoModeSet : Boolean = False;
|
||||
|
||||
Function SetVideoDriver (Const Driver : TVideoDriver) : Boolean;
|
||||
{ Sets the videodriver to be used }
|
||||
begin
|
||||
If Not VideoInitialized then
|
||||
Begin
|
||||
CurrentVideoDriver:=Driver;
|
||||
SetVideoDriver:=Not VideoInitialized;
|
||||
DriverInitialized:=true;
|
||||
NextVideoModeSet:=false;
|
||||
End;
|
||||
SetVideoDriver:=Not VideoInitialized;
|
||||
end;
|
||||
|
||||
Procedure GetVideoDriver (Var Driver : TVideoDriver);
|
||||
@ -86,17 +93,17 @@ begin
|
||||
If (ScreenWidth<OldCols) then
|
||||
C:=ScreenWidth
|
||||
else
|
||||
C:=OldCols;
|
||||
C:=OldCols;
|
||||
If (ScreenHeight<OldRows) then
|
||||
R:=ScreenHeight
|
||||
else
|
||||
R:=OldRows;
|
||||
R:=OldRows;
|
||||
For I:=0 to R-1 do
|
||||
begin
|
||||
Move(VideoBuf[I*S*OldCols],NewVideoBuf[I*S*ScreenWidth],S*C);
|
||||
Move(OldVideoBuf[I*S*OldCols],NewOldVideoBuf[I*S*ScreenWidth],S*C);
|
||||
Move(VideoBuf^[I*OldCols],NewVideoBuf^[I*ScreenWidth],S*C);
|
||||
Move(OldVideoBuf^[I*OldCols],NewOldVideoBuf^[I*ScreenWidth],S*C);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
FreeVideoBuf;
|
||||
VideoBufSize:=NewVideoBufSize;
|
||||
VideoBuf:=NewVideoBuf;
|
||||
@ -110,6 +117,10 @@ begin
|
||||
begin
|
||||
If Assigned(CurrentVideoDriver.InitDriver) then
|
||||
CurrentVideoDriver.InitDriver;
|
||||
VideoInitialized:=True;
|
||||
if NextVideoModeSet then
|
||||
SetVideoMode(NextVideoMode)
|
||||
else
|
||||
AssignVideoBuf(0,0);
|
||||
ClearScreen;
|
||||
end;
|
||||
@ -123,7 +134,7 @@ begin
|
||||
begin
|
||||
If Assigned(CurrentVideoDriver.DoneDriver) then
|
||||
CurrentVideoDriver.DoneDriver;
|
||||
FreeVideoBuf;
|
||||
FreeVideoBuf;
|
||||
VideoInitialized:=False;
|
||||
end;
|
||||
end;
|
||||
@ -198,6 +209,11 @@ Var
|
||||
OldR,OldC: Word;
|
||||
|
||||
begin
|
||||
SetVideoMode:=DriverInitialized;
|
||||
if not DriverInitialized then
|
||||
exit;
|
||||
If VideoInitialized then
|
||||
begin
|
||||
OldC:=ScreenWidth;
|
||||
OldR:=ScreenHeight;
|
||||
If Assigned(CurrentVideoDriver.SetVideoMode) then
|
||||
@ -207,6 +223,12 @@ begin
|
||||
// Assign buffer
|
||||
If SetVideoMode then
|
||||
AssignVideoBuf(OldC,Oldr);
|
||||
end
|
||||
else
|
||||
begin
|
||||
NextVideoMode:=Mode;
|
||||
NextVideoModeSet:=true;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
@ -214,7 +236,7 @@ Function GetVideoModeCount : Word;
|
||||
|
||||
begin
|
||||
If Assigned(CurrentVideoDriver.GetVideoModeCount) then
|
||||
GetVideoModeCount:=GetVideoModeCount()
|
||||
GetVideoModeCount:=CurrentVideoDriver.GetVideoModeCount()
|
||||
else
|
||||
GetVideoModeCount:=1;
|
||||
end;
|
||||
@ -239,11 +261,12 @@ begin
|
||||
DefaultErrorHandler := errAbort; { return error code }
|
||||
end;
|
||||
|
||||
|
||||
|
||||
{
|
||||
$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
|
||||
|
||||
Revision 1.4 2001/10/06 22:28:24 michael
|
||||
|
@ -1483,9 +1483,15 @@ end;
|
||||
|
||||
|
||||
function SysPollKeyEvent: TKeyEvent;
|
||||
var
|
||||
KeyEvent : TKeyEvent;
|
||||
begin
|
||||
if keypressed then
|
||||
SysPollKeyEvent:=SysGetKeyEvent
|
||||
begin
|
||||
KeyEvent:=SysGetKeyEvent;
|
||||
PutKeyEvent(KeyEvent);
|
||||
SysPollKeyEvent:=KeyEvent
|
||||
end
|
||||
else
|
||||
SysPollKeyEvent:=0;
|
||||
end;
|
||||
@ -1498,11 +1504,11 @@ end;
|
||||
|
||||
|
||||
procedure RestoreStartMode;
|
||||
|
||||
begin
|
||||
TCSetAttr(1,TCSANOW,StartTio);
|
||||
end;
|
||||
|
||||
|
||||
Const
|
||||
SysKeyboardDriver : TKeyboardDriver = (
|
||||
InitDriver : @SysInitKeyBoard;
|
||||
@ -1511,16 +1517,19 @@ Const
|
||||
PollKeyEvent : @SysPollKeyEvent;
|
||||
GetShiftState : @SysGetShiftState;
|
||||
TranslateKeyEvent : Nil;
|
||||
TranslateKeyEventUnicode : Nil;
|
||||
TranslateKeyEventUnicode : Nil;
|
||||
);
|
||||
|
||||
begin
|
||||
begin
|
||||
SetKeyBoardDriver(SysKeyBoardDriver);
|
||||
TCGetAttr(1,StartTio);
|
||||
end.
|
||||
{
|
||||
$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
|
||||
|
||||
Revision 1.7 2001/08/30 20:55:08 peter
|
||||
|
Loading…
Reference in New Issue
Block a user