diff --git a/MUNGA_L4/L4VB16.cpp b/MUNGA_L4/L4VB16.cpp index 9f4c268..85762f5 100644 --- a/MUNGA_L4/L4VB16.cpp +++ b/MUNGA_L4/L4VB16.cpp @@ -5169,6 +5169,25 @@ Logical SVGA16::Update(Logical forceAll) //No MFDs to draw, break out early. The sweep counter resets //too: leaving it part-used would keep the renderer in its //copy phase, and it never draws another gauge while there. + // + // The ROTATION has to step on the way out as well, and did + // not. It lives at the END of this function, so returning + // from here parked mDisplayToUpdate on the display we cannot + // service - and a station with no MFD ports can never + // service it, so the counter stopped dead the first time it + // landed there. Display 0's copy, which is the map, then + // never ran again: a Live Cam, whose cameraInit page + // configures the secondary port and nothing else, kept + // whatever the one early pass had put on the pane. A blank + // map, because nothing had registered with the renderer that + // early, beside a score frozen at its opening value - while + // the canvas underneath went on being drawn perfectly, which + // is what made this so hard to see. + mDisplayToUpdate++; + if (mDisplayToUpdate >= NUMGAUGEWINDOWS) + { + mDisplayToUpdate = 0; + } mDisplaysCopiedThisPass = 0; return False; } @@ -5181,7 +5200,13 @@ Logical SVGA16::Update(Logical forceAll) secPalette = &((SVGA16 *) secPort->graphicsDisplay)->palette[secPort->paletteID]; } else { - //No secondary, skip - and end the sweep, as above. + //No secondary, skip - and end the sweep, as above, stepping + //past the display we cannot service for the same reason. + mDisplayToUpdate++; + if (mDisplayToUpdate >= NUMGAUGEWINDOWS) + { + mDisplayToUpdate = 0; + } mDisplaysCopiedThisPass = 0; return False; }