Browse Source

* initernmodenumber is now renumbered at the end of AddMode() it
also sets hi/lo for the driver

peter 25 years ago
parent
commit
0f6ce09f13
1 changed files with 23 additions and 28 deletions
  1. 23 28
      rtl/inc/graph/modes.inc

+ 23 - 28
rtl/inc/graph/modes.inc

@@ -79,7 +79,7 @@ end;
   {********************************************************}
   var
 {$ifndef nonewmodes}
-    driverNr, modeNr: smallint;
+    i,driverNr, modeNr: smallint;
     prev: PModeInfo;
 {$endif nonewmodes}
     list: PModeInfo;
@@ -89,6 +89,7 @@ end;
     res2Mode(mode.maxx+1,mode.maxy+1,mode.maxColor,driverNr,ModeNr);
     { bitdepth supported? }
     if (driverNr <> maxsmallint) then
+     begin
       { Yes, add the mode }
       if not assigned(newModeList.modeinfo[driverNr]) then
         begin
@@ -98,13 +99,7 @@ end;
 {$endif logging}
           new(newModeList.modeinfo[driverNr]);
           newModeList.modeinfo[driverNr]^ := mode;
-          with newModeList.modeinfo[driverNr]^ do
-            begin
-              internModeNumber := 1;
-              next := nil;
-            end;
-          newModeList.loHiModeNr[driverNr].lo := 1;
-          newModeList.loHiModeNr[driverNr].hi := 1;
+          newModeList.modeinfo[driverNr]^.next:=nil;
         end
       else
         begin
@@ -130,17 +125,14 @@ end;
                 ' ('+strf(mode.maxx)+'x'+strf(mode.maxy)+')');
 {$endif logging}
               { save/restore next, drivernr and drivermode in list }
-              modeNr := list^.internModeNumber;
               prev := list^.next;
               list^ := mode;
-              list^.internModeNumber := modeNr;
               list^.next := prev;
             end
           else
             begin
               new(newLst);
               { Increase the number of modes for this driver }
-              inc(newModeList.loHiModeNr[driverNr].hi);
               newLst^ := mode;
 {$ifdef logging}
               logln('Adding resolution '+strf(modenr)+' for drivernr '+strf(drivernr)+
@@ -151,25 +143,23 @@ end;
               else
                 newLst^.next := nil;
               if assigned(prev) then
-                begin
-                  prev^.next := newLst;
-                  newLst^.internModeNumber := succ(prev^.internModeNumber)
-                end
+                prev^.next := newLst
               else
-                begin
-                  newModeList.modeinfo[driverNr] := newLst;
-                  newLst^.internModeNumber := 1;
-                end;
-              { Increase the modenumbers of all modes coming after this one }
-              { with 1                                                      }
-              newLst := newLst^.next;
-              while assigned(newLst) do
-                begin
-                  inc(newLst^.internModeNumber);
-                  newLst := newLst^.next;
-                end;
+                newModeList.modeinfo[driverNr] := newLst;
             end;
         end;
+       { renumber internmodenumber }
+       list := newModeList.modeinfo[driverNr];
+       i:=0;
+       while assigned(list) do
+        begin
+          inc(i);
+          list^.internmodenumber:=i;
+          list:=list^.next;
+        end;
+       newModeList.loHiModeNr[driverNr].lo:=1;
+       newModeList.loHiModeNr[driverNr].hi:=i;
+     end;
 {$endif nonewmodes}
     { TP-like mode stuff }
     if not assigned(ModeList) then
@@ -187,6 +177,7 @@ end;
         list^.next := NewLst;
         move(mode, NewLst^, sizeof(Mode));
       end;
+
   end;
 
 
@@ -588,7 +579,11 @@ end;
 
 {
 $Log$
-Revision 1.33  2000-07-08 13:00:08  jonas
+Revision 1.34  2000-07-09 07:21:14  peter
+  * initernmodenumber is now renumbered at the end of AddMode() it
+    also sets hi/lo for the driver
+
+Revision 1.33  2000/07/08 13:00:08  jonas
   * forgot to remove some non-working experimental code from last
     commit :(