diff --git a/patches/vpinball/0005-window-onresized-backbuffer-sync.patch b/patches/vpinball/0005-window-onresized-backbuffer-sync.patch new file mode 100644 index 0000000..b8940aa --- /dev/null +++ b/patches/vpinball/0005-window-onresized-backbuffer-sync.patch @@ -0,0 +1,20 @@ +diff --git a/src/renderer/Window.cpp b/src/renderer/Window.cpp +index ad608f8..3dff060 100644 +--- a/src/renderer/Window.cpp ++++ b/src/renderer/Window.cpp +@@ -381,6 +381,15 @@ void Window::OnResized() + return; + SDL_GetWindowSize(m_nwnd, &m_width, &m_height); + SDL_GetWindowSizeInPixels(m_nwnd, &m_pixelWidth, &m_pixelHeight); ++ // vpinball-wasm: keep the (GL) default back buffer's tracked size in sync ++ // with the window's actual pixel size, mirroring what the BGFX backend ++ // already does explicitly every frame (RenderDevice.cpp's swapchain ++ // resize handling). Without this, glViewport(0, 0, m_width, m_height) in ++ // RenderTarget::Activate() keeps using the pre-resize size forever, so ++ // e.g. entering browser fullscreen (which resizes the canvas well after ++ // the back buffer was created) only renders into the old, smaller area. ++ if (m_backBuffer) ++ m_backBuffer->SetSize(m_pixelWidth, m_pixelHeight); + } + + VPX::Window::VideoMode Window::SDLtoVPXVideoMode(const SDL_DisplayMode* mode)