* No videobuffer switch necessary for fvision win32 graphic version

This commit is contained in:
pierre 2002-06-06 06:46:28 +00:00
parent 62348069bf
commit 9cc0b51e98

View File

@ -157,6 +157,9 @@ uses
,Dpmiexcp, Go32 ,Dpmiexcp, Go32
{$endif} {$endif}
{$endif} {$endif}
{$ifdef fvision}
,Drivers
{$endif}
{$ifdef VESA} {$ifdef VESA}
,VESA ,VESA
{$endif} {$endif}
@ -647,6 +650,9 @@ begin
IDEScreenBufferHandle:=NewScreenBufferHandle; IDEScreenBufferHandle:=NewScreenBufferHandle;
DosScreenBufferHandle:=StartScreenBufferHandle; DosScreenBufferHandle:=StartScreenBufferHandle;
Capture; Capture;
{$ifdef fvision}
if TextModeGFV then
{$endif fvision}
SwitchBackToIDEScreen; SwitchBackToIDEScreen;
end; end;
@ -846,29 +852,44 @@ end;
do hold all the info } do hold all the info }
procedure TWin32Screen.SaveIDEScreen; procedure TWin32Screen.SaveIDEScreen;
begin begin
GetConsoleMode(GetStdHandle(Std_Input_Handle), @IdeMode); {$ifdef fvision}
{ set the dummy buffer as active already now PM } if TextModeGFV then
SetStdHandle(Std_Output_Handle,DummyScreenBufferHandle); {$endif fvision}
UpdateFileHandles; begin
GetConsoleMode(GetStdHandle(Std_Input_Handle), @IdeMode);
{ set the dummy buffer as active already now PM }
SetStdHandle(Std_Output_Handle,DummyScreenBufferHandle);
UpdateFileHandles;
end;
end; end;
{ dummy for win32 as the Buffer screen { dummy for win32 as the Buffer screen
do hold all the info } do hold all the info }
procedure TWin32Screen.SaveConsoleScreen; procedure TWin32Screen.SaveConsoleScreen;
begin begin
GetConsoleMode(GetStdHandle(Std_Input_Handle), @ConsoleMode); {$ifdef fvision}
{ set the dummy buffer as active already now PM } if TextModeGFV then
SetStdHandle(Std_Output_Handle,DummyScreenBufferHandle); {$endif fvision}
UpdateFileHandles; begin
GetConsoleMode(GetStdHandle(Std_Input_Handle), @ConsoleMode);
{ set the dummy buffer as active already now PM }
SetStdHandle(Std_Output_Handle,DummyScreenBufferHandle);
UpdateFileHandles;
end;
end; end;
procedure TWin32Screen.SwitchToConsoleScreen; procedure TWin32Screen.SwitchToConsoleScreen;
begin begin
SetConsoleActiveScreenBuffer(DosScreenBufferHandle); {$ifdef fvision}
SetStdHandle(Std_Output_Handle,DosScreenBufferHandle); if TextModeGFV then
{$endif fvision}
begin
SetConsoleActiveScreenBuffer(DosScreenBufferHandle);
SetStdHandle(Std_Output_Handle,DosScreenBufferHandle);
SetConsoleMode(GetStdHandle(Std_Input_Handle), ConsoleMode);
UpdateFileHandles;
end;
IDEActive:=false; IDEActive:=false;
SetConsoleMode(GetStdHandle(Std_Input_Handle), ConsoleMode);
UpdateFileHandles;
end; end;
procedure TWin32Screen.SwitchBackToIDEScreen; procedure TWin32Screen.SwitchBackToIDEScreen;
@ -878,29 +899,34 @@ var
res : boolean; res : boolean;
error : longint; error : longint;
begin begin
SetStdHandle(Std_Output_Handle,IDEScreenBufferHandle); {$ifdef fvision}
UpdateFileHandles; if TextModeGFV then
GetConsoleScreenBufferInfo(IDEScreenBufferHandle, {$endif fvision}
@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 begin
if WindowPos.Right<X-1 then SetStdHandle(Std_Output_Handle,IDEScreenBufferHandle);
WindowPos.right:=X-1; UpdateFileHandles;
if WindowPos.Bottom<Y-1 then GetConsoleScreenBufferInfo(IDEScreenBufferHandle,
WindowPos.Bottom:=Y-1; @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; end;
res:=SetConsoleWindowInfo(IDEScreenBufferHandle,true,WindowPos);
if not res then
error:=GetLastError;
IDEActive:=true; IDEActive:=true;
end; end;
@ -943,7 +969,10 @@ end;
end. end.
{ {
$Log$ $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 * fix the disappearing desktop for win32
Revision 1.8 2002/01/22 16:29:52 pierre Revision 1.8 2002/01/22 16:29:52 pierre