Browse Source

* No videobuffer switch necessary for fvision win32 graphic version

pierre 23 years ago
parent
commit
9cc0b51e98
1 changed files with 63 additions and 34 deletions
  1. 63 34
      ide/fpusrscr.pas

+ 63 - 34
ide/fpusrscr.pas

@@ -157,6 +157,9 @@ uses
     ,Dpmiexcp, Go32
     {$endif}
   {$endif}
+  {$ifdef fvision}
+    ,Drivers
+  {$endif}
   {$ifdef VESA}
     ,VESA
   {$endif}
@@ -647,6 +650,9 @@ begin
   IDEScreenBufferHandle:=NewScreenBufferHandle;
   DosScreenBufferHandle:=StartScreenBufferHandle;
   Capture;
+{$ifdef fvision}
+  if TextModeGFV then
+{$endif fvision}
   SwitchBackToIDEScreen;
 end;
 
@@ -846,29 +852,44 @@ end;
   do hold all the info }
 procedure TWin32Screen.SaveIDEScreen;
 begin
-  GetConsoleMode(GetStdHandle(Std_Input_Handle), @IdeMode);
-  { set the dummy buffer as active already now PM }
-  SetStdHandle(Std_Output_Handle,DummyScreenBufferHandle);
-  UpdateFileHandles;
+{$ifdef fvision}
+  if TextModeGFV then
+{$endif fvision}
+    begin
+      GetConsoleMode(GetStdHandle(Std_Input_Handle), @IdeMode);
+      { set the dummy buffer as active already now PM }
+      SetStdHandle(Std_Output_Handle,DummyScreenBufferHandle);
+      UpdateFileHandles;
+    end;
 end;
 
 { dummy for win32 as the Buffer screen
   do hold all the info }
 procedure TWin32Screen.SaveConsoleScreen;
 begin
-  GetConsoleMode(GetStdHandle(Std_Input_Handle), @ConsoleMode);
-  { set the dummy buffer as active already now PM }
-  SetStdHandle(Std_Output_Handle,DummyScreenBufferHandle);
-  UpdateFileHandles;
+{$ifdef fvision}
+  if TextModeGFV then
+{$endif fvision}
+    begin
+      GetConsoleMode(GetStdHandle(Std_Input_Handle), @ConsoleMode);
+      { set the dummy buffer as active already now PM }
+      SetStdHandle(Std_Output_Handle,DummyScreenBufferHandle);
+      UpdateFileHandles;
+    end;
 end;
 
 procedure TWin32Screen.SwitchToConsoleScreen;
 begin
-  SetConsoleActiveScreenBuffer(DosScreenBufferHandle);
-  SetStdHandle(Std_Output_Handle,DosScreenBufferHandle);
+{$ifdef fvision}
+  if TextModeGFV then
+{$endif fvision}
+    begin
+      SetConsoleActiveScreenBuffer(DosScreenBufferHandle);
+      SetStdHandle(Std_Output_Handle,DosScreenBufferHandle);
+      SetConsoleMode(GetStdHandle(Std_Input_Handle), ConsoleMode);
+      UpdateFileHandles;
+    end;
   IDEActive:=false;
-  SetConsoleMode(GetStdHandle(Std_Input_Handle), ConsoleMode);
-  UpdateFileHandles;
 end;
 
 procedure TWin32Screen.SwitchBackToIDEScreen;
@@ -878,29 +899,34 @@ var
   res : boolean;
   error : longint;
 begin
-  SetStdHandle(Std_Output_Handle,IDEScreenBufferHandle);
-  UpdateFileHandles;
-  GetConsoleScreenBufferInfo(IDEScreenBufferHandle,
-    @ConsoleScreenBufferInfo);
-  SetConsoleActiveScreenBuffer(IDEScreenBufferHandle);
-  IdeMode:=(IdeMode or ENABLE_MOUSE_INPUT) and not ENABLE_PROCESSED_INPUT;
-  SetConsoleMode(GetStdHandle(Std_Input_Handle), IdeMode);
-  WindowPos.left:=0;
-  WindowPos.right:=ConsoleScreenBufferInfo.srWindow.right
-                   -ConsoleScreenBufferInfo.srWindow.left;
-  WindowPos.top:=0;
-  WindowPos.bottom:=ConsoleScreenBufferInfo.srWindow.bottom
-                   -ConsoleScreenBufferInfo.srWindow.top;
-  with ConsoleScreenBufferInfo.dwMaximumWindowSize do
+{$ifdef fvision}
+  if TextModeGFV then
+{$endif fvision}
     begin
-    if WindowPos.Right<X-1 then
-      WindowPos.right:=X-1;
-    if WindowPos.Bottom<Y-1 then
-      WindowPos.Bottom:=Y-1;
+      SetStdHandle(Std_Output_Handle,IDEScreenBufferHandle);
+      UpdateFileHandles;
+      GetConsoleScreenBufferInfo(IDEScreenBufferHandle,
+        @ConsoleScreenBufferInfo);
+      SetConsoleActiveScreenBuffer(IDEScreenBufferHandle);
+      IdeMode:=(IdeMode or ENABLE_MOUSE_INPUT) and not ENABLE_PROCESSED_INPUT;
+      SetConsoleMode(GetStdHandle(Std_Input_Handle), IdeMode);
+      WindowPos.left:=0;
+      WindowPos.right:=ConsoleScreenBufferInfo.srWindow.right
+                       -ConsoleScreenBufferInfo.srWindow.left;
+      WindowPos.top:=0;
+      WindowPos.bottom:=ConsoleScreenBufferInfo.srWindow.bottom
+                       -ConsoleScreenBufferInfo.srWindow.top;
+      with ConsoleScreenBufferInfo.dwMaximumWindowSize do
+        begin
+        if WindowPos.Right<X-1 then
+          WindowPos.right:=X-1;
+        if WindowPos.Bottom<Y-1 then
+          WindowPos.Bottom:=Y-1;
+        end;
+      res:=SetConsoleWindowInfo(IDEScreenBufferHandle,true,WindowPos);
+      if not res then
+        error:=GetLastError;
     end;
-  res:=SetConsoleWindowInfo(IDEScreenBufferHandle,true,WindowPos);
-  if not res then
-    error:=GetLastError;
   IDEActive:=true;
 end;
 
@@ -943,7 +969,10 @@ end;
 end.
 {
   $Log$
-  Revision 1.9  2002-04-25 13:34:17  pierre
+  Revision 1.10  2002-06-06 06:46:28  pierre
+   * No videobuffer switch necessary for fvision win32 graphic version
+
+  Revision 1.9  2002/04/25 13:34:17  pierre
    * fix the disappearing desktop for win32
 
   Revision 1.8  2002/01/22 16:29:52  pierre