summaryrefslogtreecommitdiff
path: root/web/share/js/kvm/stream.js
diff options
context:
space:
mode:
authorMaxim Devaev <[email protected]>2022-02-21 04:18:15 +0300
committerMaxim Devaev <[email protected]>2022-02-21 04:18:15 +0300
commit96191a1b0809a62e5b14316190c3de46b05d9ec2 (patch)
tree6a1e6238ecb6fad8ce78f644af99c73533fbbe30 /web/share/js/kvm/stream.js
parent67839a52a22a4e470109d3d0c8acf4798843bcf6 (diff)
ocr
Diffstat (limited to 'web/share/js/kvm/stream.js')
-rw-r--r--web/share/js/kvm/stream.js22
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) {