diff options
author | Max Horn | 2009-04-24 10:46:46 +0000 |
---|---|---|
committer | Max Horn | 2009-04-24 10:46:46 +0000 |
commit | 22a803cc692a8040770806b2d0a27e1b2693e289 (patch) | |
tree | f7bf57a64d731b34838634e5fe6a2d2b9433655c /engines/sci/engine/kgraphics.cpp | |
parent | 9445439c4ff745ef90c38403d82035abadf87ef2 (diff) | |
download | scummvm-rg350-22a803cc692a8040770806b2d0a27e1b2693e289.tar.gz scummvm-rg350-22a803cc692a8040770806b2d0a27e1b2693e289.tar.bz2 scummvm-rg350-22a803cc692a8040770806b2d0a27e1b2693e289.zip |
SCI: Rewrote the port_refs code (fixing at least three serious bugs in it. Wow, crappy)
svn-id: r40105
Diffstat (limited to 'engines/sci/engine/kgraphics.cpp')
-rw-r--r-- | engines/sci/engine/kgraphics.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/engines/sci/engine/kgraphics.cpp b/engines/sci/engine/kgraphics.cpp index 7500062d2d..6e3b8ae115 100644 --- a/engines/sci/engine/kgraphics.cpp +++ b/engines/sci/engine/kgraphics.cpp @@ -2437,7 +2437,6 @@ reg_t kDisposeWindow(EngineState *s, int funct_nr, int argc, reg_t *argv) { unsigned int goner_nr = SKPV(0); GfxPort *goner; GfxPort *pred; - int id = s->visual->port_refs_nr; goner = gfxw_find_port(s->visual, goner_nr); if ((goner_nr < 3) || (goner == NULL)) { @@ -2458,11 +2457,12 @@ reg_t kDisposeWindow(EngineState *s, int funct_nr, int argc, reg_t *argv) { s->port = pred; // Find the last port that exists and that isn't marked no-switch - while ((!s->visual->port_refs[id] && id >= 0) || (s->visual->port_refs[id]->_flags & GFXW_FLAG_NO_IMPLICIT_SWITCH)) + int id = s->visual->_portRefs.size() - 1; + while (id > 0 && (!s->visual->_portRefs[id] || (s->visual->_portRefs[id]->_flags & GFXW_FLAG_NO_IMPLICIT_SWITCH))) id--; sciprintf("Activating port %d after disposing window %d\n", id, goner_nr); - s->port = s->visual->port_refs[id]; + s->port = (id >= 0) ? s->visual->_portRefs[id] : 0; if (!s->port) s->port = gfxw_find_default_port(s->visual); |