From bd745d3e826cd8e7258adef64d0080de1015092e Mon Sep 17 00:00:00 2001 From: Jonas Maebe Date: Sat, 14 Apr 2001 16:06:03 +0000 Subject: [PATCH] * fixed problem with new modes system (reported by Vladimir Ravodin) (merged) --- rtl/inc/graph/graph.inc | 19 ++++++++++++++++--- rtl/inc/graph/modes.inc | 21 +++++++++++++++------ 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/rtl/inc/graph/graph.inc b/rtl/inc/graph/graph.inc index ac337108e6..15a18d8948 100644 --- a/rtl/inc/graph/graph.inc +++ b/rtl/inc/graph/graph.inc @@ -2303,7 +2303,12 @@ end; { _GraphResult is now already set to grOK by DetectGraph } IntCurrentDriver := GraphDriver; - IntCurrentNewDriver := GraphDriver; + + if (graphDriver >= lowNewDriver) and + (graphDriver <= highNewDriver) then + IntCurrentNewDriver := GraphDriver + else IntCurrentNewDriver := -1; + { Actually set the graph mode...} if firstCallOfInitgraph then begin @@ -2324,7 +2329,12 @@ end; begin _GraphResult := grOK; IntCurrentDriver := GraphDriver; - IntCurrentNewDriver := GraphDriver; + + if (graphDriver >= lowNewDriver) and + (graphDriver <= highNewDriver) then + IntCurrentNewDriver := GraphDriver + else IntCurrentNewDriver := -1; + if firstCallOfInitgraph then begin SaveVideoState; @@ -2441,7 +2451,10 @@ begin end; { $Log$ - Revision 1.5 2000-12-07 17:19:47 jonas + Revision 1.6 2001-04-14 16:06:03 jonas + * fixed problem with new modes system (reported by Vladimir Ravodin) (merged) + + Revision 1.5 2000/12/07 17:19:47 jonas * new constant handling: from now on, hex constants >$7fffffff are parsed as unsigned constants (otherwise, $80000000 got sign extended and became $ffffffff80000000), all constants in the longint range diff --git a/rtl/inc/graph/modes.inc b/rtl/inc/graph/modes.inc index 3c220f7993..133f40c9d7 100644 --- a/rtl/inc/graph/modes.inc +++ b/rtl/inc/graph/modes.inc @@ -406,6 +406,7 @@ end; procedure SetGraphMode(mode: smallint); var modeinfo: PModeInfo; + usedDriver: Integer; begin { check if the mode exists... } { Depending on the modenumber, we search using the old or new } @@ -417,12 +418,19 @@ end; detectMode: begin mode := -32767; + usedDriver := IntcurrentNewDriver; modeInfo := searchmode(IntcurrentNewDriver,mode); end; lowNewMode..highNewMode: - modeInfo := searchmode(IntcurrentNewDriver,mode); + begin + usedDriver := IntcurrentNewDriver; + modeInfo := searchmode(IntcurrentNewDriver,mode); + end; else - modeinfo := searchmode(IntcurrentDriver,mode); + begin + usedDriver := IntcurrentDriver; + modeinfo := searchmode(IntcurrentDriver,mode); + end; end; if not assigned(modeinfo) then begin @@ -434,8 +442,6 @@ end; end; { reset all hooks...} DefaultHooks; - { arccall not reset - tested against VGA BGI driver } - { Setup all hooks if none, keep old defaults...} { required hooks - returns error if no hooks to these } { routines. } @@ -531,7 +537,7 @@ end; OutTextXY:=modeInfo^.OutTextXY; IntCurrentMode := modeinfo^.ModeNumber; - IntCurrentDriver := modeinfo^.DriverNumber; + IntCurrentDriver := usedDriver; {$ifdef logging} logln('Entering mode '+strf(intCurrentMode)+' of driver '+strf(intCurrentDriver)); {$endif logging} @@ -592,7 +598,10 @@ end; { $Log$ - Revision 1.5 2001-04-13 23:49:48 peter + Revision 1.6 2001-04-14 16:06:03 jonas + * fixed problem with new modes system (reported by Vladimir Ravodin) (merged) + + Revision 1.5 2001/04/13 23:49:48 peter * fixes for the stricter compiler Revision 1.4 2000/08/12 12:27:14 jonas