diff options
author | Maxim Devaev <[email protected]> | 2022-02-21 04:18:15 +0300 |
---|---|---|
committer | Maxim Devaev <[email protected]> | 2022-02-21 04:18:15 +0300 |
commit | 96191a1b0809a62e5b14316190c3de46b05d9ec2 (patch) | |
tree | 6a1e6238ecb6fad8ce78f644af99c73533fbbe30 /web/share/js/kvm/stream.js | |
parent | 67839a52a22a4e470109d3d0c8acf4798843bcf6 (diff) |
ocr
Diffstat (limited to 'web/share/js/kvm/stream.js')
-rw-r--r-- | web/share/js/kvm/stream.js | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/web/share/js/kvm/stream.js b/web/share/js/kvm/stream.js index fad90123..8e68e4a6 100644 --- a/web/share/js/kvm/stream.js +++ b/web/share/js/kvm/stream.js @@ -455,8 +455,26 @@ export function Streamer() { /************************************************************************/ - self.getResolution = function() { - return __streamer.getResolution(); + self.getGeometry = function() { + // Первоначально обновление геометрии считалось через ResizeObserver. + // Но оно не ловило некоторые события, например в последовательности: + // - Находять в HD переходим в фулскрин + // - Меняем разрешение на маленькое + // - Убираем фулскрин + // - Переходим в HD + // - Видим нарушение пропорций + // Так что теперь используются быстре рассчеты через offset* + // вместо getBoundingClientRect(). + let res = __streamer.getResolution(); + let ratio = Math.min(res.view_width / res.real_width, res.view_height / res.real_height); + return { + "x": Math.round((res.view_width - ratio * res.real_width) / 2), + "y": Math.round((res.view_height - ratio * res.real_height) / 2), + "width": Math.round(ratio * res.real_width), + "height": Math.round(ratio * res.real_height), + "real_width": res.real_width, + "real_height": res.real_height, + }; }; self.setJanusEnabled = function(enabled) { |