mirror of
https://github.com/overte-org/overte.git
synced 2025-04-07 22:14:34 +02:00
Other users seem to be experiencing issues with Audio. Removing it may not be the correct action, instead exposing the API may be the correct action.
67 lines
2.6 KiB
JavaScript
67 lines
2.6 KiB
JavaScript
// 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);
|
|
});
|
|
});
|
|
})();
|