aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine/kgraphics.cpp
diff options
context:
space:
mode:
authorMax Horn2009-04-24 10:46:46 +0000
committerMax Horn2009-04-24 10:46:46 +0000
commit22a803cc692a8040770806b2d0a27e1b2693e289 (patch)
treef7bf57a64d731b34838634e5fe6a2d2b9433655c /engines/sci/engine/kgraphics.cpp
parent9445439c4ff745ef90c38403d82035abadf87ef2 (diff)
downloadscummvm-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.cpp6
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);