diff --git a/src/intermission/intermission.cpp b/src/intermission/intermission.cpp index 650f03f87..bc052b5dd 100644 --- a/src/intermission/intermission.cpp +++ b/src/intermission/intermission.cpp @@ -732,10 +732,6 @@ DIntermissionController::DIntermissionController(FIntermissionDescriptor *Desc, mScreen = NULL; mFirst = true; mGameState = state; - - // If the intermission finishes straight away then cancel the wipe. - if(!NextPage()) - wipegamestate = GS_FINALE; } bool DIntermissionController::NextPage () @@ -898,6 +894,13 @@ void F_StartIntermission(FIntermissionDescriptor *desc, bool deleteme, uint8_t s viewactive = false; automapactive = false; DIntermissionController::CurrentIntermission = Create(desc, deleteme, state); + + // If the intermission finishes straight away then cancel the wipe. + if (!DIntermissionController::CurrentIntermission->NextPage()) + { + wipegamestate = GS_FINALE; + } + GC::WriteBarrier(DIntermissionController::CurrentIntermission); } diff --git a/src/intermission/intermission.h b/src/intermission/intermission.h index 565e3a164..9111ebe99 100644 --- a/src/intermission/intermission.h +++ b/src/intermission/intermission.h @@ -304,6 +304,7 @@ public: void OnDestroy() override; friend void F_AdvanceIntermission(); + friend void F_StartIntermission(FIntermissionDescriptor *, bool, uint8_t); };