diff options
-rw-r--r-- | engines/sci/engine/kevent.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/engines/sci/engine/kevent.cpp b/engines/sci/engine/kevent.cpp index 5fb2948a4b..9d48174078 100644 --- a/engines/sci/engine/kevent.cpp +++ b/engines/sci/engine/kevent.cpp @@ -176,8 +176,18 @@ reg_t kGetEvent(EngineState *s, int argc, reg_t *argv) { // Wait a bit here, so that the CPU isn't maxed out when the game // is waiting for user input (e.g. when showing text boxes) - bug - // #3037874. - g_system->delayMillis(10); + // #3037874. This works when games do benchmarking at the beginning, + // because most of them call kAnimate for benchmarking without + // calling kGetEvent in between (rightly so). + if (g_sci->getGameId() == GID_JONES && g_sci->getEngineState()->currentRoomNumber() == 764) { + // Jones CD is an exception, as it incorrectly calls GetEvent + // while benchmarking. Thus, don't delay here for room 764 in + // Jones (the speed test room), otherwise speed testing will + // fail and the game won't show any views, as it will think that + // the user has a slow machine - bug #3058865 + } else { + g_system->delayMillis(10); + } return s->r_acc; } |