Fix borderless host resize presentation ordering

This commit is contained in:
2026-04-14 01:42:44 +08:00
parent 9064c2f5f2
commit ba91e0f5dd
6 changed files with 523 additions and 6 deletions

View File

@@ -6,6 +6,7 @@
#include <Host/AutoScreenshot.h>
#include <Host/BorderlessWindowChrome.h>
#include <Host/BorderlessWindowFrame.h>
#include <Host/D3D12WindowRenderer.h>
#include <Host/D3D12WindowRenderLoop.h>
#include <Host/HostRuntimeState.h>
@@ -53,6 +54,7 @@ private:
void OnDpiChanged(UINT dpi, const RECT& suggestedRect);
bool ApplyWindowResize(UINT width, UINT height);
bool QueryCurrentClientPixelSize(UINT& outWidth, UINT& outHeight) const;
bool ResolveRenderClientPixelSize(UINT& outWidth, UINT& outHeight) const;
bool IsPointerInsideClientArea() const;
bool ApplyCurrentCursor() const;
LPCWSTR ResolveCurrentCursorResource() const;
@@ -84,6 +86,14 @@ private:
bool HandleBorderlessWindowChromeButtonUp(LPARAM lParam);
bool HandleBorderlessWindowChromeDoubleClick(LPARAM lParam);
void ClearBorderlessWindowChromeState();
Host::BorderlessWindowResizeEdge HitTestBorderlessWindowResizeEdge(LPARAM lParam) const;
bool UpdateBorderlessWindowResizeHover(LPARAM lParam);
bool HandleBorderlessWindowResizeButtonDown(LPARAM lParam);
bool HandleBorderlessWindowResizeButtonUp();
bool HandleBorderlessWindowResizePointerMove();
void ClearBorderlessWindowResizeState();
void ForceClearBorderlessWindowResizeState();
void ApplyBorderlessWindowResizeCursorHoverPriority();
void AppendBorderlessWindowChrome(
::XCEngine::UI::UIDrawList& drawList,
float clientWidthDips) const;