mirror of
https://github.com/hedge-dev/UnleashedRecomp.git
synced 2025-12-31 08:21:11 -06:00
* Experimenting with syncing the render thread. * Separate wait functions for swap chains. * Sync render thread present to the main thread. * Move present to main thread and frame limit after presenting. * g_next -> s_next * Fix Vulkan validation errors. * Make max frame latency configurable. * Fix loading thread breaking waitable swap chain order.
63 lines
1.3 KiB
C++
63 lines
1.3 KiB
C++
#include <app.h>
|
|
#include <gpu/video.h>
|
|
#include <install/installer.h>
|
|
#include <kernel/function.h>
|
|
#include <ui/game_window.h>
|
|
#include <patches/audio_patches.h>
|
|
#include <user/config.h>
|
|
#include <os/process.h>
|
|
|
|
void App::Restart(std::vector<std::string> restartArgs)
|
|
{
|
|
os::process::StartProcess(os::process::GetExecutablePath(), restartArgs, os::process::GetWorkingDirectory());
|
|
Exit();
|
|
}
|
|
|
|
void App::Exit()
|
|
{
|
|
Config::Save();
|
|
|
|
#ifdef _WIN32
|
|
timeEndPeriod(1);
|
|
#endif
|
|
|
|
std::_Exit(0);
|
|
}
|
|
|
|
// CApplication::Ctor
|
|
PPC_FUNC_IMPL(__imp__sub_824EB490);
|
|
PPC_FUNC(sub_824EB490)
|
|
{
|
|
App::s_isInit = true;
|
|
App::s_isMissingDLC = !Installer::checkAllDLC(GetGamePath());
|
|
App::s_language = Config::Language;
|
|
|
|
__imp__sub_824EB490(ctx, base);
|
|
}
|
|
|
|
// CApplication::Update
|
|
PPC_FUNC_IMPL(__imp__sub_822C1130);
|
|
PPC_FUNC(sub_822C1130)
|
|
{
|
|
Video::WaitOnSwapChain();
|
|
|
|
// Correct small delta time errors.
|
|
if (Config::FPS >= FPS_MIN && Config::FPS < FPS_MAX)
|
|
{
|
|
double targetDeltaTime = 1.0 / Config::FPS;
|
|
if (abs(ctx.f1.f64 - targetDeltaTime) < 0.00001)
|
|
ctx.f1.f64 = targetDeltaTime;
|
|
}
|
|
|
|
App::s_deltaTime = ctx.f1.f64;
|
|
|
|
SDL_PumpEvents();
|
|
SDL_FlushEvents(SDL_FIRSTEVENT, SDL_LASTEVENT);
|
|
|
|
GameWindow::Update();
|
|
AudioPatches::Update(App::s_deltaTime);
|
|
|
|
__imp__sub_822C1130(ctx, base);
|
|
}
|
|
|