| 3159 | } |
| 3160 | |
| 3161 | bool GuiController::CallPause() |
| 3162 | { |
| 3163 | g_Renderer.DumpGameScene(SceneRenderMode::NoHud); |
| 3164 | g_VideoPlayer.Pause(); |
| 3165 | PauseAllSounds(SoundPauseMode::Pause); |
| 3166 | SoundEffect(SFX_TR4_MENU_SELECT, nullptr, SoundEnvironment::Always); |
| 3167 | |
| 3168 | g_Gui.SetInventoryMode(InventoryMode::Pause); |
| 3169 | g_Gui.SetMenuToDisplay(Menu::Pause); |
| 3170 | g_Gui.SetSelectedOption(0); |
| 3171 | |
| 3172 | bool doExitToTitle = false; |
| 3173 | |
| 3174 | g_Synchronizer.Init(); |
| 3175 | |
| 3176 | bool legacy30FpsDoneDraw = false; |
| 3177 | |
| 3178 | while (g_Gui.GetInventoryMode() == InventoryMode::Pause) |
| 3179 | { |
| 3180 | if (ThreadEnded) |
| 3181 | { |
| 3182 | App.ResetClock = true; |
| 3183 | return false; |
| 3184 | } |
| 3185 | |
| 3186 | g_Synchronizer.Sync(); |
| 3187 | |
| 3188 | while (g_Synchronizer.Synced()) |
| 3189 | { |
| 3190 | g_Renderer.PrepareScene(); |
| 3191 | |
| 3192 | if (g_Gui.DoPauseMenu(LaraItem) == InventoryResult::ExitToTitle) |
| 3193 | { |
| 3194 | doExitToTitle = true; |
| 3195 | break; |
| 3196 | } |
| 3197 | |
| 3198 | g_Synchronizer.Step(); |
| 3199 | |
| 3200 | legacy30FpsDoneDraw = false; |
| 3201 | } |
| 3202 | |
| 3203 | if (doExitToTitle) |
| 3204 | break; |
| 3205 | |
| 3206 | if (!g_Configuration.EnableHighFramerate) |
| 3207 | { |
| 3208 | if (!legacy30FpsDoneDraw) |
| 3209 | { |
| 3210 | g_Renderer.RenderInventory(); |
| 3211 | g_Renderer.Lock(); |
| 3212 | g_Renderer.Synchronize(); |
| 3213 | legacy30FpsDoneDraw = true; |
| 3214 | } |
| 3215 | } |
| 3216 | else |
| 3217 | { |
| 3218 | g_Renderer.RenderInventory(); |
no test coverage detected