mirror of
https://github.com/overte-org/overte.git
synced 2025-07-23 13:04:07 +02:00
Merge pull request #9497 from ctrlaltdavid/fix-clara-download
Fix intermittent Clara.io download crashes
This commit is contained in:
commit
5ada689ab7
2 changed files with 28 additions and 15 deletions
|
@ -253,6 +253,16 @@ int WindowScriptingInterface::createMessageBox(QString title, QString text, int
|
||||||
void WindowScriptingInterface::updateMessageBox(int id, QString title, QString text, int buttons, int defaultButton) {
|
void WindowScriptingInterface::updateMessageBox(int id, QString title, QString text, int buttons, int defaultButton) {
|
||||||
auto messageBox = _messageBoxes.value(id);
|
auto messageBox = _messageBoxes.value(id);
|
||||||
if (messageBox) {
|
if (messageBox) {
|
||||||
|
if (QThread::currentThread() != thread()) {
|
||||||
|
QMetaObject::invokeMethod(this, "updateMessageBox",
|
||||||
|
Q_ARG(int, id),
|
||||||
|
Q_ARG(QString, title),
|
||||||
|
Q_ARG(QString, text),
|
||||||
|
Q_ARG(int, buttons),
|
||||||
|
Q_ARG(int, defaultButton));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
messageBox->setProperty("title", title);
|
messageBox->setProperty("title", title);
|
||||||
messageBox->setProperty("text", text);
|
messageBox->setProperty("text", text);
|
||||||
messageBox->setProperty("buttons", buttons);
|
messageBox->setProperty("buttons", buttons);
|
||||||
|
@ -263,6 +273,12 @@ void WindowScriptingInterface::updateMessageBox(int id, QString title, QString t
|
||||||
void WindowScriptingInterface::closeMessageBox(int id) {
|
void WindowScriptingInterface::closeMessageBox(int id) {
|
||||||
auto messageBox = _messageBoxes.value(id);
|
auto messageBox = _messageBoxes.value(id);
|
||||||
if (messageBox) {
|
if (messageBox) {
|
||||||
|
if (QThread::currentThread() != thread()) {
|
||||||
|
QMetaObject::invokeMethod(this, "closeMessageBox",
|
||||||
|
Q_ARG(int, id));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
disconnect(messageBox);
|
disconnect(messageBox);
|
||||||
messageBox->setVisible(false);
|
messageBox->setVisible(false);
|
||||||
messageBox->deleteLater();
|
messageBox->deleteLater();
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
|
|
||||||
var canWriteAssets = false;
|
var canWriteAssets = false;
|
||||||
var xmlHttpRequest = null;
|
var xmlHttpRequest = null;
|
||||||
var isDownloading = false; // Explicitly track download request status.
|
var isPreparing = false; // Explicitly track download request status.
|
||||||
|
|
||||||
function injectCommonCode(isDirectoryPage) {
|
function injectCommonCode(isDirectoryPage) {
|
||||||
|
|
||||||
|
@ -139,7 +139,7 @@
|
||||||
function startAutoDownload() {
|
function startAutoDownload() {
|
||||||
|
|
||||||
// One file request at a time.
|
// One file request at a time.
|
||||||
if (isDownloading) {
|
if (isPreparing) {
|
||||||
console.log("WARNIKNG: Clara.io FBX: Prepare only one download at a time");
|
console.log("WARNIKNG: Clara.io FBX: Prepare only one download at a time");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -178,7 +178,7 @@
|
||||||
var message = this.responseText.slice(responseTextIndex);
|
var message = this.responseText.slice(responseTextIndex);
|
||||||
var statusMessage = "";
|
var statusMessage = "";
|
||||||
|
|
||||||
if (isDownloading) { // Ignore messages in flight after finished/cancelled.
|
if (isPreparing) { // Ignore messages in flight after finished/cancelled.
|
||||||
var lines = message.split(/[\n\r]+/);
|
var lines = message.split(/[\n\r]+/);
|
||||||
|
|
||||||
for (var i = 0, length = lines.length; i < length; i++) {
|
for (var i = 0, length = lines.length; i < length; i++) {
|
||||||
|
@ -222,33 +222,30 @@
|
||||||
xmlHttpRequest.onload = function () {
|
xmlHttpRequest.onload = function () {
|
||||||
var statusMessage = "";
|
var statusMessage = "";
|
||||||
|
|
||||||
if (!isDownloading) {
|
if (!isPreparing) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isPreparing = false;
|
||||||
|
|
||||||
var HTTP_OK = 200;
|
var HTTP_OK = 200;
|
||||||
if (this.status !== HTTP_OK) {
|
if (this.status !== HTTP_OK) {
|
||||||
statusMessage = "Zip file request terminated with " + this.status + " " + this.statusText;
|
statusMessage = "Zip file request terminated with " + this.status + " " + this.statusText;
|
||||||
console.log("ERROR: Clara.io FBX: " + statusMessage);
|
console.log("ERROR: Clara.io FBX: " + statusMessage);
|
||||||
EventBridge.emitWebEvent(CLARA_IO_STATUS + " " + statusMessage);
|
EventBridge.emitWebEvent(CLARA_IO_STATUS + " " + statusMessage);
|
||||||
return;
|
} else if (zipFileURL.slice(-4) !== ".zip") {
|
||||||
}
|
|
||||||
|
|
||||||
if (zipFileURL.slice(-4) !== ".zip") {
|
|
||||||
statusMessage = "Error creating zip file for download.";
|
statusMessage = "Error creating zip file for download.";
|
||||||
console.log("ERROR: Clara.io FBX: " + statusMessage + ": " + zipFileURL);
|
console.log("ERROR: Clara.io FBX: " + statusMessage + ": " + zipFileURL);
|
||||||
EventBridge.emitWebEvent(CLARA_IO_STATUS + " " + statusMessage);
|
EventBridge.emitWebEvent(CLARA_IO_STATUS + " " + statusMessage);
|
||||||
return;
|
} else {
|
||||||
|
EventBridge.emitWebEvent(CLARA_IO_DOWNLOAD + " " + zipFileURL);
|
||||||
|
console.log("Clara.io FBX: File download initiated for " + zipFileURL);
|
||||||
}
|
}
|
||||||
|
|
||||||
EventBridge.emitWebEvent(CLARA_IO_DOWNLOAD + " " + zipFileURL);
|
|
||||||
console.log("Clara.io FBX: File download initiated for " + zipFileURL);
|
|
||||||
|
|
||||||
xmlHttpRequest = null;
|
xmlHttpRequest = null;
|
||||||
isDownloading = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
isDownloading = true;
|
isPreparing = true;
|
||||||
|
|
||||||
console.log("Clara.io FBX: Request zip file for " + uuid);
|
console.log("Clara.io FBX: Request zip file for " + uuid);
|
||||||
EventBridge.emitWebEvent(CLARA_IO_STATUS + " Initiating download");
|
EventBridge.emitWebEvent(CLARA_IO_STATUS + " Initiating download");
|
||||||
|
@ -301,7 +298,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
function cancelClaraDownload() {
|
function cancelClaraDownload() {
|
||||||
isDownloading = false;
|
isPreparing = false;
|
||||||
|
|
||||||
if (xmlHttpRequest) {
|
if (xmlHttpRequest) {
|
||||||
xmlHttpRequest.abort();
|
xmlHttpRequest.abort();
|
||||||
|
|
Loading…
Reference in a new issue