Cleanup the lingo callstack when closing.
When a movie calls `go frameId` a big pause button is hit
and everything is put into order to not go to the frame +1
but to the requested frameId. That big pause button is called
`_freezeContext`.
However when quitting in the middle of a frozen context
there are lingo frames left on the callstack.
This can be reliably reproduced with a plethora of D2 and D3 movies
with the debugflags fewframesonly,fast.
When using this option with Simon 1, Simon wouldn't be cleared from the
bottom of the screen, if pressing Esc when Simon starts walking through
the screen right after the "Simon the Sorcerer" title is printed, at the
very beginning of the game.
Triggering the clearSurfaces() code even when _neverFade is enabled
solves this problem.
Fixes a mistake of mine in commit 802caa4c39.
References to FOND resource streams are stored in an array.
Font streams were registered by their family name in a hashmap.
When a second font with the same name was encoutered it would replace
the pointer to the previous font.
The only use case for the hashmap was to register the stream to be able
to later close them.
The exeStream should only be deleted in `loadExeV3`
One `loadExeV?` is not like the others. They all load RIFX files
except for the V3 variant. They all error on an error during the opening of
the stream, except voor the V3 variant.
The segfault was introduced in 12bb1a495f by fixing a memory leak
for the `exeStream`.
Lingo function `closeResFile` is only responsible for closing resource
file opened by `openResFile`. Register in `openResFile` which files
where opened and close only those files in `closeResFile`.
- Rename `_openResFiles` to `_allOpenResFiles` and
- Add new `_openResFiles` hashmap to track which files were opened in
`openResFile`.
This is the same in the original interpreter, but I assume
they just don't update the screen as much as we do.
The problem is that the new scene palette is
generated and set before the new scene is actually drawn. So there is a moment where the old scene is visible with the new palette...