Update m_Do window viewport immediately on Aurora window resize

The framebuffer size flows into Aurora as follows:

Into JUTVideo:
  AURORA_WINDOW_RESIZED handler ->
  mDoGph_gInf_c::setWindowSize ->
  JUTVideo::setWindowSize
From JUTVideo -> dComIfG_play_c:
  fpcCt_Handler ->
  phase_4 ->
  dComIfGp_setWindow
From dComIfGp_play_c -> Aurora:
  mDoGph_Painter ->
  drawDepth2 ->
  GXSetTexCopySrc ->
  GXCopyTex ->
  aurora::gfx::resolve_pass (called by GXCopyTex)

The trouble is that 1) phase_4 is only called when creating a new scene/room,
and 2) even when it is called, mDoGph_Painter is executed before fpcCt_Handler
in the main loop so the new size isn't visible to aurora::gfx::resolve_pass
until one frame after it's set. This causes a crash due to the original size
being passed to CopyTextureToTexture despite the destination framebuffer now
being smaller.

As a workaround, we just cut out the whole middleman section and call
dComIfGp_setWindow immediately when we receive a resize event. This way the new
size is immediately visible to Aurora.
This commit is contained in:
Max Roncace
2026-03-18 12:06:46 -04:00
parent 929e71975c
commit 2194b7ecf4
+1
View File
@@ -680,6 +680,7 @@ void mDoGph_gInf_c::setWideZoomLightProjection(Mtx& m) {
#if TARGET_PC
void mDoGph_gInf_c::setWindowSize(AuroraWindowSize const& size) {
JUTVideo::getManager()->setWindowSize(size);
dComIfGp_setWindow(0, 0.0f, 0.0f, getWidth(), getHeight(), 0.0f, 1.0f, 0, 2);
mFader->mBox.set(0, 0, getWidth(), getHeight());
}
#endif