From 658442e6104af3dd28c625a2adaf9e17e1efe22d Mon Sep 17 00:00:00 2001 From: nickysn Date: Sun, 16 Nov 2014 13:00:46 +0000 Subject: [PATCH] * do not call SetVESAMode in TDOSScreen.SaveConsoleScreen, because it destroys the palette before we can save it and because InitGraph is called later anyway git-svn-id: trunk@29078 - --- ide/fpusrscr.pas | 127 +++++++++++++++++++++++------------------------ 1 file changed, 62 insertions(+), 65 deletions(-) diff --git a/ide/fpusrscr.pas b/ide/fpusrscr.pas index 92fb947cf7..344ef28e3c 100644 --- a/ide/fpusrscr.pas +++ b/ide/fpusrscr.pas @@ -513,73 +513,70 @@ begin (ConsoleVideoInfo.Mode=$6) or (ConsoleVideoInfo.Mode=$4) then begin - if VesaSetMode(ConsoleVideoInfo.Mode or $8000) then + Graph.DontClearGraphMemory:=true; + if ConsoleVideoInfo.Mode>=$100 then begin - Graph.DontClearGraphMemory:=true; - if ConsoleVideoInfo.Mode>=$100 then - begin - GraphDriver:=Graph.Vesa; - GraphMode:=ConsoleVideoInfo.Mode and $fff; - end - else - begin - case ConsoleVideoInfo.Mode of - $4 : begin - GraphDriver:=Graph.CGA; - case (Mem[$40:$66] shr 4) and 3 of - 0: GraphMode:=CGAC2; - 1: GraphMode:=CGAC0; - 2: GraphMode:=CGAC3; - 3: GraphMode:=CGAC1; - end; - end; - $6 : begin - GraphDriver:=Graph.CGA; - GraphMode:=CGAHi; - end; - $E : begin - GraphDriver:=Graph.VGA; - GraphMode:=VGALo; - end; - $10 : begin - GraphDriver:=Graph.VGA; - GraphMode:=VGAMed; - end; - $12 : begin - GraphDriver:=Graph.VGA; - GraphMode:=VGAHi; - end; - $13 : begin - GraphDriver:=Graph.LowRes; - GraphMode:=0; - end; - end; - end; - Graph.InitGraph(GraphDriver,GraphMode,''); - if graphresult=grOk then - begin - ConsoleGraphDriver:=GraphDriver; - GraphDriverName:=GetDriverName; - GraphModeName:=GetModeName(GraphMode); - ConsoleGraphMode:=GraphMode; - Graph.DontClearGraphMemory:=false; - GraphXres:=Graph.GetmaxX; - GraphYres:=Graph.GetmaxY; - GraphImageSize:=ImageSize(0,0,GraphXres,GraphYres); - GetMem(GraphBuffer,GraphImageSize); - FillChar(GraphBuffer^,GraphImageSize,#0); - GetImage(0,0,GraphXres,GraphYres,GraphBuffer^); - ConsoleVideoInfo.Rows:=GraphYres div 8; - ConsoleVideoInfo.Cols:=GraphXres div 8; - {FreeBuffer;} - saved:=true; - end -{$ifdef DEBUG} - else - Writeln(stderr,'Error in InitGraph ',Graphdriver, ' ',Graphmode) -{$endif DEBUG} - ; + GraphDriver:=Graph.Vesa; + GraphMode:=ConsoleVideoInfo.Mode and $fff; + end + else + begin + case ConsoleVideoInfo.Mode of + $4 : begin + GraphDriver:=Graph.CGA; + case (Mem[$40:$66] shr 4) and 3 of + 0: GraphMode:=CGAC2; + 1: GraphMode:=CGAC0; + 2: GraphMode:=CGAC3; + 3: GraphMode:=CGAC1; + end; + end; + $6 : begin + GraphDriver:=Graph.CGA; + GraphMode:=CGAHi; + end; + $E : begin + GraphDriver:=Graph.VGA; + GraphMode:=VGALo; + end; + $10 : begin + GraphDriver:=Graph.VGA; + GraphMode:=VGAMed; + end; + $12 : begin + GraphDriver:=Graph.VGA; + GraphMode:=VGAHi; + end; + $13 : begin + GraphDriver:=Graph.LowRes; + GraphMode:=0; + end; + end; end; + Graph.InitGraph(GraphDriver,GraphMode,''); + if graphresult=grOk then + begin + ConsoleGraphDriver:=GraphDriver; + GraphDriverName:=GetDriverName; + GraphModeName:=GetModeName(GraphMode); + ConsoleGraphMode:=GraphMode; + Graph.DontClearGraphMemory:=false; + GraphXres:=Graph.GetmaxX; + GraphYres:=Graph.GetmaxY; + GraphImageSize:=ImageSize(0,0,GraphXres,GraphYres); + GetMem(GraphBuffer,GraphImageSize); + FillChar(GraphBuffer^,GraphImageSize,#0); + GetImage(0,0,GraphXres,GraphYres,GraphBuffer^); + ConsoleVideoInfo.Rows:=GraphYres div 8; + ConsoleVideoInfo.Cols:=GraphXres div 8; + {FreeBuffer;} + saved:=true; + end +{$ifdef DEBUG} + else + Writeln(stderr,'Error in InitGraph ',Graphdriver, ' ',Graphmode) +{$endif DEBUG} + ; end; { mode < $100 so use standard Save code } if not saved then