Merge branch 'master' of github.com:highfidelity/hifi into yellow

This commit is contained in:
Sam Gateau 2019-08-16 17:35:15 -07:00
commit 3ace52629c
6 changed files with 26 additions and 8 deletions

View file

@ -2761,7 +2761,6 @@ void Application::cleanupBeforeQuit() {
}
getEntities()->shutdown(); // tell the entities system we're shutting down, so it will stop running scripts
getEntities()->clear();
// Clear any queued processing (I/O, FBX/OBJ/Texture parsing)
QThreadPool::globalInstance()->clear();

View file

@ -253,7 +253,7 @@ void EntityTreeRenderer::clear() {
// unload and stop the engine
if (_entitiesScriptEngine) {
// do this here (instead of in deleter) to avoid marshalling unload signals back to this thread
_entitiesScriptEngine->unloadAllEntityScripts();
_entitiesScriptEngine->unloadAllEntityScripts(true);
_entitiesScriptEngine->stop();
}

View file

@ -2470,13 +2470,14 @@ QList<EntityItemID> ScriptEngine::getListOfEntityScriptIDs() {
return _entityScripts.keys();
}
void ScriptEngine::unloadAllEntityScripts() {
void ScriptEngine::unloadAllEntityScripts(bool blockingCall) {
if (QThread::currentThread() != thread()) {
#ifdef THREAD_DEBUGGING
qCDebug(scriptengine) << "*** WARNING *** ScriptEngine::unloadAllEntityScripts() called on wrong thread [" << QThread::currentThread() << "], invoking on correct thread [" << thread() << "]";
#endif
QMetaObject::invokeMethod(this, "unloadAllEntityScripts");
QMetaObject::invokeMethod(this, "unloadAllEntityScripts",
blockingCall ? Qt::BlockingQueuedConnection : Qt::QueuedConnection);
return;
}
#ifdef THREAD_DEBUGGING

View file

@ -578,9 +578,10 @@ public:
/**jsdoc
* @function Script.unloadAllEntityScripts
* @param {boolean} [blockingCall=false] - Wait for completion if call moved to another thread.
* @deprecated This function is deprecated and will be removed.
*/
Q_INVOKABLE void unloadAllEntityScripts();
Q_INVOKABLE void unloadAllEntityScripts(bool blockingCall = false);
/**jsdoc
* Calls a method in an entity script.

View file

@ -40,10 +40,10 @@ module.exports = {
response = { statusCode: httpRequest.status };
}
callback(error, response, optionalCallbackParameter);
// Break circular reference to httpRequest so the engine can garbage collect it.
httpRequest.onreadystatechange = null;
callback(error, response, optionalCallbackParameter);
}
};
if (typeof options === 'string') {

View file

@ -483,7 +483,16 @@ function updateInputDeviceMutedOverlay(isMuted) {
function onDesktopInputDeviceMutedChanged(isMuted) {
updateInputDeviceMutedOverlay(isMuted);
if (!HMD.active) {
updateInputDeviceMutedOverlay(isMuted);
}
}
function onHMDInputDeviceMutedChanged(isMuted) {
if (HMD.active) {
updateInputDeviceMutedOverlay(isMuted);
}
}
@ -508,6 +517,12 @@ function onDisplayModeChanged(isHMDMode) {
if (isHMDMode) {
Camera.setModeString("first person");
}
if (isHMDMode) {
onHMDInputDeviceMutedChanged(Audio.mutedHMD);
} else {
onDesktopInputDeviceMutedChanged(Audio.mutedDesktop);
}
}
function onToolbarVisibleChanged(isVisible, toolbarName) {
@ -578,6 +593,7 @@ function startup() {
updateInputDeviceMutedOverlay(Audio.muted);
updateOutputDeviceMutedOverlay(isOutputMuted());
Audio.mutedDesktopChanged.connect(onDesktopInputDeviceMutedChanged);
Audio.mutedHMDChanged.connect(onHMDInputDeviceMutedChanged);
Window.geometryChanged.connect(onGeometryChanged);
HMD.displayModeChanged.connect(onDisplayModeChanged);
Audio.avatarGainChanged.connect(maybeUpdateOutputDeviceMutedOverlay);
@ -634,6 +650,7 @@ function shutdown() {
si.unload();
Audio.mutedDesktopChanged.disconnect(onDesktopInputDeviceMutedChanged);
Audio.mutedHMDChanged.disconnect(onHMDInputDeviceMutedChanged);
Window.geometryChanged.disconnect(onGeometryChanged);
HMD.displayModeChanged.disconnect(onDisplayModeChanged);
Audio.avatarGainChanged.disconnect(maybeUpdateOutputDeviceMutedOverlay);