From 5da77a6b4fd975ef46263f00112c97bbe97fb98f Mon Sep 17 00:00:00 2001 From: Sergey Stepanov Date: Thu, 21 Mar 2024 23:02:53 +0300 Subject: [PATCH] Fix aspect ratio of PSX games in full-screen --- web/js/stream.js | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/web/js/stream.js b/web/js/stream.js index cd2134648..3ccfaee49 100644 --- a/web/js/stream.js +++ b/web/js/stream.js @@ -86,28 +86,26 @@ screen.addEventListener('canplay', () => { useCustomScreen(options.mirrorMode === 'mirror'); }, false); -screen.addEventListener('fullscreenchange', () => { - state.fullscreen = !!document.fullscreenElement; - +const screenToAspect = (el) => { const w = window.screen.width ?? window.innerWidth; - const h = window.screen.height ?? window.innerHeight; + const hh = el.innerHeight || el.clientHeight || 0; + const dw = (w - hh * state.aspect) / 2 + screen.style.padding = `0 ${dw}px` +} - const ww = document.documentElement.innerWidth; - const hh = document.documentElement.innerHeight; +screen.addEventListener('fullscreenchange', () => { + state.fullscreen = !!document.fullscreenElement; - screen.style.padding = '0' - if (state.fullscreen) { - const dw = (w - ww * state.aspect) / 2 - screen.style.padding = `0 ${dw}px` + if (!state.fullscreen) { + screen.style.padding = '0' + } else { + screenToAspect(document.fullscreenElement); // chrome bug setTimeout(() => { - const dw = (h - hh * state.aspect) / 2 - screen.style.padding = `0 ${dw}px` + screenToAspect(document.fullscreenElement) }, 1) - makeFullscreen(true); - } else { - makeFullscreen(false); } + makeFullscreen(state.fullscreen); // !to flipped })