// Created by Anthony J. Thibault on 9/7/2016// Copyright 2016 High Fidelity, Inc.// Copyright 2023 Overte e.V.//// Distributed under the Apache License, Version 2.0.// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html//// Stick a EventBridge object in the global namespace.var EventBridge;(function () { // the TempEventBridge class queues up emitWebEvent messages and executes them when the real EventBridge is ready. // Similarly, it holds all scriptEventReceived callbacks, and hooks them up to the real EventBridge. function TempEventBridge() { var self = this; this._callbacks = []; this._messages = []; this.scriptEventReceived = { connect: function (callback) { self._callbacks.push(callback); } }; this.emitWebEvent = function (message) { self._messages.push(message); }; } EventBridge = new TempEventBridge(); var webChannel = new QWebChannel(qt.webChannelTransport, (channel) => { // // replace the TempEventBridge with the real one. var tempEventBridge = EventBridge; EventBridge = channel.objects.eventBridge; // TODO: These event listeners cause issues. Most likely the function is not being exposed to this scope. This may be causing issues! // To be able to update the state of the output device selection for every element added to the DOM // we need to listen to events that might precede the addition of this elements. // A more robust hack will be to add a setInterval that look for DOM changes every 100-300 ms (low performance?) // window.addEventListener("load",function(event) { // setTimeout(function() { // EventBridge.forceHtmlAudioOutputDeviceUpdate(); // }, 1200); // }, false); // document.addEventListener("click",function(){ // setTimeout(function() { // EventBridge.forceHtmlAudioOutputDeviceUpdate(); // }, 1200); // }, false); // document.addEventListener("change",function(){ // setTimeout(function() { // EventBridge.forceHtmlAudioOutputDeviceUpdate(); // }, 1200); // }, false); tempEventBridge._callbacks.forEach(function (callback) { EventBridge.scriptEventReceived.connect(callback); }); tempEventBridge._messages.forEach(function (message) { EventBridge.emitWebEvent(message); }); });})();
// Created by Anthony J. Thibault on 9/7/2016
// Copyright 2016 High Fidelity, Inc.
// Copyright 2023 Overte e.V.
//
// Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
//
// Stick a EventBridge object in the global namespace.
var EventBridge;
(function () {
// the TempEventBridge class queues up emitWebEvent messages and executes them when the real EventBridge is ready.
// Similarly, it holds all scriptEventReceived callbacks, and hooks them up to the real EventBridge.
function TempEventBridge() {
var self = this;
this._callbacks = [];
this._messages = [];
this.scriptEventReceived = {
connect: function (callback) {
self._callbacks.push(callback);
}
};
this.emitWebEvent = function (message) {
self._messages.push(message);
};
}
EventBridge = new TempEventBridge();
var webChannel = new QWebChannel(qt.webChannelTransport, (channel) => {
//
// replace the TempEventBridge with the real one.
var tempEventBridge = EventBridge;
EventBridge = channel.objects.eventBridge;
// TODO: These event listeners cause issues. Most likely the function is not being exposed to this scope. This may be causing issues!
// To be able to update the state of the output device selection for every element added to the DOM
// we need to listen to events that might precede the addition of this elements.
// A more robust hack will be to add a setInterval that look for DOM changes every 100-300 ms (low performance?)
// window.addEventListener("load",function(event) {
// setTimeout(function() {
// EventBridge.forceHtmlAudioOutputDeviceUpdate();
// }, 1200);
// }, false);
// document.addEventListener("click",function(){
// setTimeout(function() {
// EventBridge.forceHtmlAudioOutputDeviceUpdate();
// }, 1200);
// }, false);
// document.addEventListener("change",function(){
// setTimeout(function() {
// EventBridge.forceHtmlAudioOutputDeviceUpdate();
// }, 1200);
// }, false);
tempEventBridge._callbacks.forEach(function (callback) {
EventBridge.scriptEventReceived.connect(callback);
});
tempEventBridge._messages.forEach(function (message) {
EventBridge.emitWebEvent(message);
});
});
})();