47 lines
1.5 KiB
C++
47 lines
1.5 KiB
C++
#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
|