From aa083604e1f0909d4e8930d242e79624e5fac08f Mon Sep 17 00:00:00 2001 From: Magnus Norddahl Date: Sat, 23 Jul 2022 19:10:59 +0200 Subject: [PATCH] Fix variable arg bindings Always clear the drawer --- src/common/2d/v_draw.cpp | 6 +++--- src/common/2d/v_drawtext.cpp | 4 ++-- src/common/rendering/gl/gl_framebuffer.cpp | 1 + src/common/rendering/vulkan/system/vk_framebuffer.cpp | 1 + 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/common/2d/v_draw.cpp b/src/common/2d/v_draw.cpp index 7d730c95d7..780692f2e1 100644 --- a/src/common/2d/v_draw.cpp +++ b/src/common/2d/v_draw.cpp @@ -272,7 +272,7 @@ DEFINE_ACTION_FUNCTION(FCanvas, DrawTexture) PARAM_VA_POINTER(va_reginfo) // Get the hidden type information array auto tex = TexMan.GameByIndex(texid, animate); - VMVa_List args = { param + 4, 0, numparam - 5, va_reginfo + 4 }; + VMVa_List args = { param + 5, 0, numparam - 6, va_reginfo + 5 }; DoDrawTexture(self->Drawer.get(), tex, x, y, args); return 0; } @@ -346,7 +346,7 @@ DEFINE_ACTION_FUNCTION(FCanvas, DrawShape) PARAM_VA_POINTER(va_reginfo) // Get the hidden type information array auto tex = TexMan.GameByIndex(texid, animate); - VMVa_List args = { param + 3, 0, numparam - 4, va_reginfo + 3 }; + VMVa_List args = { param + 4, 0, numparam - 5, va_reginfo + 4 }; DrawShape(self->Drawer.get(), tex, shape, args); return 0; @@ -380,7 +380,7 @@ DEFINE_ACTION_FUNCTION(FCanvas, DrawShapeFill) PARAM_VA_POINTER(va_reginfo) // Get the hidden type information array - VMVa_List args = { param + 3, 0, numparam - 4, va_reginfo + 3 }; + VMVa_List args = { param + 4, 0, numparam - 5, va_reginfo + 4 }; color.a = int(amount * 255.0f); diff --git a/src/common/2d/v_drawtext.cpp b/src/common/2d/v_drawtext.cpp index d5ed9af98d..c475707e90 100644 --- a/src/common/2d/v_drawtext.cpp +++ b/src/common/2d/v_drawtext.cpp @@ -246,7 +246,7 @@ DEFINE_ACTION_FUNCTION(FCanvas, DrawChar) PARAM_VA_POINTER(va_reginfo) // Get the hidden type information array - VMVa_List args = { param + 5, 0, numparam - 6, va_reginfo + 5 }; + VMVa_List args = { param + 6, 0, numparam - 7, va_reginfo + 6 }; DrawChar(self->Drawer.get(), font, cr, x, y, chr, args); return 0; } @@ -448,7 +448,7 @@ DEFINE_ACTION_FUNCTION(FCanvas, DrawText) PARAM_VA_POINTER(va_reginfo) // Get the hidden type information array - VMVa_List args = { param + 5, 0, numparam - 6, va_reginfo + 5 }; + VMVa_List args = { param + 6, 0, numparam - 7, va_reginfo + 6 }; const char *txt = chr[0] == '$' ? GStrings(&chr[1]) : chr.GetChars(); DrawText(self->Drawer.get(), font, cr, x, y, txt, args); return 0; diff --git a/src/common/rendering/gl/gl_framebuffer.cpp b/src/common/rendering/gl/gl_framebuffer.cpp index 7f0e5f326a..422eccccd9 100644 --- a/src/common/rendering/gl/gl_framebuffer.cpp +++ b/src/common/rendering/gl/gl_framebuffer.cpp @@ -233,6 +233,7 @@ void OpenGLFrameBuffer::RenderTextureView(FCanvasTexture* tex, std::functionDrawer) { ::Draw2D(tex->Drawer.get(), gl_RenderState); + tex->Drawer->Clear(); } GLRenderer->EndOffscreen(); diff --git a/src/common/rendering/vulkan/system/vk_framebuffer.cpp b/src/common/rendering/vulkan/system/vk_framebuffer.cpp index e712c93424..ee40a739b2 100644 --- a/src/common/rendering/vulkan/system/vk_framebuffer.cpp +++ b/src/common/rendering/vulkan/system/vk_framebuffer.cpp @@ -218,6 +218,7 @@ void VulkanFrameBuffer::RenderTextureView(FCanvasTexture* tex, std::functionDrawer) { ::Draw2D(tex->Drawer.get(), *mRenderState); + tex->Drawer->Clear(); } mRenderState->EndRenderPass();