mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-07-10 12:54:50 -04:00
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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user