Fix bug #1595627: "SCUMM: F5 crashes game (640x480)". This partially

reverts commit r24656 for fixing bug #1590596 and effectively fixes both.

svn-id: r24933
This commit is contained in:
Eugene Sandulenko 2006-12-27 00:47:57 +00:00
parent a0f5e6f0b1
commit 4e52f4438f
3 changed files with 16 additions and 10 deletions

View file

@ -1025,16 +1025,6 @@ int ScummEngine::init() {
initCommonGFX(defaultTo1XScaler); initCommonGFX(defaultTo1XScaler);
_system->endGFXTransaction(); _system->endGFXTransaction();
// It may happen that we have 3x scaler in launcher (960xY) and then 640x480
// game will be forced to 1x. At this stage GUI will not be aware of
// resolution change, so widgets will be off screen. This forces it to
// recompute
//
// Fixes bug #1590596: "HE: When 3x graphics are choosen, F5 crashes game"
if (defaultTo1XScaler) {
g_gui.screenChange();
}
setupScumm(); setupScumm();
readIndexFile(); readIndexFile();

View file

@ -51,6 +51,18 @@ Dialog::Dialog(const Common::String &name, bool dimsInactive_)
_mouseWidget(0), _focusedWidget(0), _dragWidget(0), _visible(false), _drawingHints(0), _mouseWidget(0), _focusedWidget(0), _dragWidget(0), _visible(false), _drawingHints(0),
_dimsInactive(dimsInactive_) { _dimsInactive(dimsInactive_) {
_drawingHints = THEME_HINT_FIRST_DRAW | THEME_HINT_SAVE_BACKGROUND; _drawingHints = THEME_HINT_FIRST_DRAW | THEME_HINT_SAVE_BACKGROUND;
// It may happen that we have 3x scaler in launcher (960xY) and then 640x480
// game will be forced to 1x. At this stage GUI will not be aware of
// resolution change, so widgets will be off screen. This forces it to
// recompute
//
// Fixes bug #1590596: "HE: When 3x graphics are choosen, F5 crashes game"
// and bug #1595627: "SCUMM: F5 crashes game (640x480)"
if (g_gui.theme()->needThemeReload()) {
debug(2, "Theme forced to reload");
g_gui.screenChange();
}
} }
Dialog::~Dialog() { Dialog::~Dialog() {

View file

@ -240,6 +240,10 @@ protected:
Common::ConfigFile _configFile; Common::ConfigFile _configFile;
Common::ConfigFile _defaultConfig; Common::ConfigFile _defaultConfig;
public:
bool needThemeReload() { return ((_loadedThemeX != g_system->getOverlayWidth()) ||
(_loadedThemeY != g_system->getOverlayHeight())); }
private: private:
static const char *_defaultConfigINI; static const char *_defaultConfigINI;
int _loadedThemeX, _loadedThemeY; int _loadedThemeX, _loadedThemeY;