Browse Source

Merge branch 'main' into unicodekvm

Karoly Balogh 3 years ago
parent
commit
b929367782

+ 3 - 3
packages/rtl-console/src/amicommon/video.pp

@@ -49,7 +49,6 @@ procedure GotInactiveWindow;
 function HasInactiveWindow: boolean;
 procedure SetWindowTitle(const winTitle: AnsiString; const screenTitle: AnsiString);
 procedure TranslateToCharXY(const X,Y: LongInt; var CX,CY: LongInt);
-procedure UpdateScreenPart(const X1,Y1,X2,Y2: Longint; Force: Boolean);
 
 var
   VideoWindow: PWindow;
@@ -564,7 +563,7 @@ begin
 end;
 
 
-procedure UpdateScreenPart(const X1,Y1,X2,Y2: Longint; Force: Boolean);
+procedure SysUpdateScreenArea(const X1,Y1,X2,Y2: Word; Force: Boolean);
 var
   SmallForce: Boolean;
   CounterX, CounterY: LongInt;
@@ -668,7 +667,7 @@ end;
 
 procedure SysUpdateScreen(Force: Boolean);
 begin
-  UpdateScreenPart(0,0,ScreenWidth-1,ScreenHeight-1,Force);
+  SysUpdateScreenArea(0,0,ScreenWidth-1,ScreenHeight-1,Force);
 end;
 
 procedure SysSetCursorPos(NewCursorX, NewCursorY: Word);
@@ -875,6 +874,7 @@ const
     InitEnhancedDriver : Nil;
     DoneDriver : @SysDoneVideo;
     UpdateScreen : @SysUpdateScreen;
+    UpdateScreenArea : @SysUpdateScreenArea;
     ClearScreen : @SysClearScreen;
     SetVideoMode : @SysSetVideoMode;
     GetVideoModeCount : @SysGetVideoModeCount;

+ 1 - 0
packages/rtl-console/src/go32v2/video.pp

@@ -310,6 +310,7 @@ Const
     InitEnhancedDriver        : Nil;
     DoneDriver                : @SysDoneVideo;
     UpdateScreen              : @SysUpdateScreen;
+    UpdateScreenArea          : Nil;
     ClearScreen               : Nil;
     SetVideoMode              : @SysSetVideoMode;
     GetVideoModeCount         : @SysGetVideoModeCount;

+ 10 - 0
packages/rtl-console/src/inc/video.inc

@@ -411,6 +411,16 @@ begin
     end;
 end;
 
+Procedure UpdateScreenArea (const X1, Y1, X2, Y2: Word; Force: Boolean);
+
+begin
+  if (LockUpdateScreen<=0) then
+    if Assigned(CurrentVideoDriver.UpdateScreenArea) then
+      CurrentVideoDriver.UpdateScreenArea(X1,Y1,X2,Y2,Force)
+    else
+      UpdateScreen(Force);
+end;
+
 procedure ClearScreen;
 const
   DefaultChar=#32;

+ 8 - 1
packages/rtl-console/src/inc/videoh.inc

@@ -57,6 +57,7 @@ type
     InitEnhancedDriver       : Procedure;
     DoneDriver               : Procedure;
     UpdateScreen             : Procedure(Force : Boolean);
+    UpdateScreenArea         : Procedure(const X1, Y1, X2, Y2: Word; Force : Boolean);
     ClearScreen              : Procedure;
     SetVideoMode             : Function (Const Mode : TVideoMode) : Boolean;
     GetVideoModeCount        : Function : Word;
@@ -173,7 +174,13 @@ procedure ClearScreen;
 { Clears the screen }
 procedure UpdateScreen(Force: Boolean);
 { Force specifies whether the whole screen has to be redrawn, or (if target
-  platform supports it) its parts only }
+  platform supports it) only the changed parts }
+procedure UpdateScreenArea(const X1, Y1, X2, Y2: Word; Force: Boolean);
+{ Updates the screen in the area marked by coordinates X1, Y1 (top left) and
+  X2, Y2 (bottom right), coordinates inclusive. Force specifies whether the
+  whole area has to be redrawn, or (if target platform supports it) its changed
+  parts only. If the target doesn't implement it, UpdateScreen() will be called
+  instead. }
 procedure SetCursorPos(NewCursorX, NewCursorY: Word);
 { Position the cursor to the given position }
 function GetCursorType: Word;

+ 1 - 0
packages/rtl-console/src/msdos/video.pp

@@ -283,6 +283,7 @@ Const
     InitEnhancedDriver        : Nil;
     DoneDriver                : @SysDoneVideo;
     UpdateScreen              : @SysUpdateScreen;
+    UpdateScreenArea          : Nil;
     ClearScreen               : Nil;
     SetVideoMode              : @SysSetVideoMode;
     GetVideoModeCount         : @SysGetVideoModeCount;

+ 1 - 0
packages/rtl-console/src/netware/video.pp

@@ -177,6 +177,7 @@ Const
   InitEnhancedDriver        : Nil;
   DoneDriver                : @SysDoneVideo;
   UpdateScreen              : @SysUpdateScreen;
+  UpdateScreenArea          : Nil;
   ClearScreen               : Nil;
   SetVideoMode              : @SysSetVideoMode;
   GetVideoModeCount         : @SysGetVideoModeCount;

+ 1 - 0
packages/rtl-console/src/netwlibc/video.pp

@@ -166,6 +166,7 @@ Const
   InitEnhancedDriver        : Nil;
   DoneDriver                : @SysDoneVideo;
   UpdateScreen              : @SysUpdateScreen;
+  UpdateScreenArea          : Nil;
   ClearScreen               : Nil;
   SetVideoMode              : @SysSetVideoMode;
   GetVideoModeCount         : @SysGetVideoModeCount;

+ 1 - 0
packages/rtl-console/src/os2commn/video.pp

@@ -431,6 +431,7 @@ Const
     InitEnhancedDriver        : nil;
     DoneDriver                : @SysDoneVideo;
     UpdateScreen              : @SysUpdateScreen;
+    UpdateScreenArea          : nil;
     ClearScreen               : @SysClearScreen;
     SetVideoMode              : @SysSetVideoMode;
     GetVideoModeCount         : @SysGetVideoModeCount;

+ 1 - 0
packages/rtl-console/src/unix/video.pp

@@ -1209,6 +1209,7 @@ Const
     InitEnhancedDriver: @SysInitVideo;
     DoneDriver : @SysDoneVideo;
     UpdateScreen : @SysUpdateScreen;
+    UpdateScreenArea : Nil;
     ClearScreen : @SysClearScreen;
     SetVideoMode : @SysSetVideoMode;
     GetVideoModeCount : Nil;

+ 1 - 0
packages/rtl-console/src/win/video.pp

@@ -428,6 +428,7 @@ Const
     InitEnhancedDriver: @SysInitVideo;
     DoneDriver : @SysDoneVideo;
     UpdateScreen : @SysUpdateScreen;
+    UpdateScreenArea: nil;
     ClearScreen : @SysClearScreen;
     SetVideoMode : @SysSetVideoMode;
     GetVideoModeCount : @SysGetVideoModeCount;

+ 1 - 0
packages/rtl-console/src/win16/video.pp

@@ -259,6 +259,7 @@ const
     InitEnhancedDriver        : nil;
     DoneDriver                : @SysDoneVideo;
     UpdateScreen              : @SysUpdateScreen;
+    UpdateScreenArea          : nil;
     ClearScreen               : nil;
     SetVideoMode              : @SysSetVideoMode;
     GetVideoModeCount         : nil;