diff options
author | johndoe123 | 2014-01-30 20:18:55 +0100 |
---|---|---|
committer | johndoe123 | 2014-01-30 20:18:55 +0100 |
commit | cf51529cfd0fedb33b1b0c70beb59997b21cfc5b (patch) | |
tree | 1df30e23c7f1eac7ca4a8ddfba40c89c2577dda7 /gui/gui-manager.cpp | |
parent | 542197a891eac799855571fe2849e0dca43bdd2b (diff) | |
parent | 462f7c1c24a48b7555316a3afae357bad14cc14b (diff) | |
download | scummvm-rg350-cf51529cfd0fedb33b1b0c70beb59997b21cfc5b.tar.gz scummvm-rg350-cf51529cfd0fedb33b1b0c70beb59997b21cfc5b.tar.bz2 scummvm-rg350-cf51529cfd0fedb33b1b0c70beb59997b21cfc5b.zip |
Merge remote-tracking branch 'origin/master' into bbvs
Diffstat (limited to 'gui/gui-manager.cpp')
-rw-r--r-- | gui/gui-manager.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/gui/gui-manager.cpp b/gui/gui-manager.cpp index 1505c8c707..999d61e854 100644 --- a/gui/gui-manager.cpp +++ b/gui/gui-manager.cpp @@ -309,6 +309,19 @@ void GuiManager::runLoop() { Common::Event event; while (eventMan->pollEvent(event)) { + // We will need to check whether the screen changed while polling + // for an event here. While we do send EVENT_SCREEN_CHANGED + // whenever this happens we still cannot be sure that we get such + // an event immediately. For example, we might have an mouse move + // event queued before an screen changed event. In some rare cases + // this would make the GUI redraw (with the code a few lines + // below) when it is not yet updated for new overlay dimensions. + // As a result ScummVM would crash because it tries to copy data + // outside the actual overlay screen. + if (event.type != Common::EVENT_SCREEN_CHANGED) { + checkScreenChange(); + } + // The top dialog can change during the event loop. In that case, flush all the // dialog-related events since they were probably generated while the old dialog // was still visible, and therefore not intended for the new one. |