#319 Blank screen in some situations when paused/breaked

open
nobody
None
5
2014-02-22
2009-03-09
SD Snatcher
No

This bug seems similar to the ID: 863122 bug.

If the emulator is paused or breaked, the screen turns black and is not updated until you continue the emulators execution.

Situations I found this to happen:

1) If you change from fullscreen to window-mode and vice-versa
2) If you change the scale_factor

Discussion

  • SD Snatcher
    SD Snatcher
    2009-04-20

    More information I did gather on this bug:

    It causes a lot of problems when debugging step-by-step, because the screens is always out of date. When I was debugging the ExecROM, the screen messages appeared a lot of time after they were issued by the BDOS call.

    Setting the accuracy to "screen" and the max-frameskip to 0 reliefs the problem a little, but the screen will still lag considerably.

     
  • I think the situations from the initial post are really not related to the other info provided later here. The initial stuff is caused by a reinitialization of SDL. The latter is about when the stuff is rendered which is already covered by https://sourceforge.net/p/openmsx/feature-requests/201/

     
  • About the original bug: I think it happens because the rendered frame is stored inside the PostProcessor object, which gets destructed and recreated when going from/to full screen or changing scale factors. This is undesired.

    One solution could be to not destruct the PostProcessor object on full screen toggle or scale factor changes. This is possible with SDL2. However, the last frame contents would still be lost when switching to a completely different post processor, such as switching between GL and software scaling.

    Long ago we had multiple rasterizers, but now we always rasterize in the same way and only the post processing differs. So we could make the last frame contents owned by the rasterizer instead of the post processor, to make sure they aren't lost when the post processor is replaced.