diff --git a/web/share/js/kvm/stream.js b/web/share/js/kvm/stream.js index 284c6511..ac6dc844 100644 --- a/web/share/js/kvm/stream.js +++ b/web/share/js/kvm/stream.js @@ -108,13 +108,27 @@ export function Streamer() { tools.el.setOnClick($("stream-screenshot-button"), __clickScreenshotButton); tools.el.setOnClick($("stream-reset-button"), __clickResetButton); - $("stream-window").show_hook = () => __applyState(__state); - $("stream-window").close_hook = () => __applyState(null); + $("stream-window").show_hook = __visibilityHook; + $("stream-window").close_hook = __visibilityHook; $("stream-window").organize_hook = __organizeHook; }; /************************************************************************/ + var __isStreamRequired = function() { + return wm.isWindowVisible($("stream-window")); + }; + + var __visibilityHook = function() { + let req = __isStreamRequired(); + __applyState(req ? __state : null); + } + + var __organizeHook = function() { + let geo = self.getGeometry(); + wm.setAspectRatio($("stream-window"), geo.width, geo.height); + }; + self.ensureDeps = function(callback) { JanusStreamer.ensure_janus(function(avail) { __janus_imported = avail; @@ -161,8 +175,7 @@ export function Streamer() { __state = null; __setControlsEnabled(false); } - let visible = wm.isWindowVisible($("stream-window")); - __applyState((visible && __state && __state.features) ? state : null); + __applyState((__isStreamRequired() && __state && __state.features) ? state : null); }; var __applyState = function(state) { @@ -295,11 +308,6 @@ export function Streamer() { el_grab.innerText = el_info.innerText = title; }; - var __organizeHook = function() { - let geo = self.getGeometry(); - wm.setAspectRatio($("stream-window"), geo.width, geo.height); - }; - var __resetStream = function(mode=null) { if (mode === null) { mode = __streamer.getMode(); @@ -324,7 +332,7 @@ export function Streamer() { tools.feature.setEnabled($("stream-audio"), false); // Enabling in stream_janus.js tools.feature.setEnabled($("stream-mic"), false); // Ditto } - if (wm.isWindowVisible($("stream-window"))) { + if (__isStreamRequired()) { __streamer.ensureStream((__state && __state.streamer !== undefined) ? __state.streamer : null); } };