Now, when the launcher is in full screen, the game will also be in full
screen. However, when returning to the launcher, graphics are reset to
default with a setupGraphics() call. Thus, if the user hasn't selected
full screen display in the options, but only used alt-enter to change
the launcher to full screen, the launcher will return to window mode.
This reverts commit 741620e4bc.
This commit breaks several engines like scumm and sword1 because they
call quitEngine function without polling the event loop afterwards.
Purging the event loop after the engine has finished would solve this,
but the EVENT_QUIT message is supposed to be processed while the engine
is still running to let user confirm the quit action (if the setting is
enabled).
If some engine is using less that 256 colors, but in its graphics
there are references to higher colors (by whatever reasons), it may
stay unnoticed on platforms that reset newly allocated memory to 0,
e.g. Windows.
On other systems like Mac, it might lead to random graphics artefacts
difficult to reproduce, e.g. due to the uninited memory.
Also, when you return to launcher from an engine, our GUI is not setting
any palette, so even on Windows, the new engine will inherit whatever
palette was set.
This was caught in Loom Mac, which uses 16 colors. Text shadow was
suddenly white instead of black. Steps to reproduce: run samnmax,
load a saved game, return to launcher, run Loom Mac.
It was addressed in 43c3cc69c2, but
this change makes it generic.
It's been a long time problem that calling quitGame
doesn't result in shouldQuit returning true until
after event processing has been done. This has resulted
in engines doing various hacks such as manually doing
an event loop, or maintaining their own quit flag.
This helps resolve the problem by additionally adding
a _quitRequested flag that's set when quitGame is called,
and additionally checking for it in shouldQuit()
Changed the extended saves code so time is stored in milliseconds
instead of seconds. This fixes an issue where loading a save would
pass a playtime value of 1/1000 of the real playtime to the engine,
resulting in total playtime effectively being zeroed every time a
save is loaded.
Existing savefile compatibility is ignored since the value stored
inside old saves would be wrong for any savefile that has been
saved over more than once.
Presents the autosave with an empty autosave slot after a successful move, or when the Delete option is chosen.
Avoids potential renaming issues for engines which may not allow an existing save file to be renamed.
This reverts commit 30d8b64657.
It fails on MSVC with error:
C2338 static_assert failed: 'va_start argument must not have reference type and must not be parenthesized'
The warning message was only based on the description of the autosave file. And that description depended on the GUI language setting, since it is a string that gets translated.
Now we also query the _saveType that is set by the metaengine...
Some engines (like kyra) return a SaveStateDescriptor with slot assigned,
even when the slot is free. The indication for an empty save is empty
description on these cases.
The FM Towns demos use audio tracks, but neither have a track 1. This
caused ScummVM to warn that the audio tracks had not been properly
ripped from the CD.