#include "Platform/Win32/EditorWindowFrameDriver.h" #include "Platform/Win32/EditorWindowChromeController.h" #include "Platform/Win32/EditorWindow.h" namespace XCEngine::UI::Editor::App { EditorWindowFrameTransferRequests EditorWindowFrameDriver::DriveFrameInternal( EditorWindow& window, EditorContext& editorContext, bool globalTabDragActive, bool requestSkipNextSteadyStateFrame) { if (!window.IsRenderReady() || window.GetHwnd() == nullptr || window.GetLifecycleState() != EditorWindowLifecycleState::Running) { return {}; } EditorWindowFrameTransferRequests transferRequests = window.RenderFrame(editorContext, globalTabDragActive); if (const HWND hwnd = window.GetHwnd(); hwnd != nullptr && IsWindow(hwnd)) { ValidateRect(hwnd, nullptr); } if (requestSkipNextSteadyStateFrame) { window.m_chromeController->RequestSkipNextSteadyStateFrame(); } return transferRequests; } EditorWindowFrameTransferRequests EditorWindowFrameDriver::DriveFrame( EditorWindow& window, EditorContext& editorContext, bool globalTabDragActive) { return DriveFrameInternal(window, editorContext, globalTabDragActive, false); } EditorWindowFrameTransferRequests EditorWindowFrameDriver::DriveImmediateFrame( EditorWindow& window, EditorContext& editorContext, bool globalTabDragActive) { return DriveFrameInternal(window, editorContext, globalTabDragActive, true); } } // namespace XCEngine::UI::Editor::App