History

Make AssetScriptingInterface::initializeCache() blocking

Simon Walton committed 7 years ago

Commit 595b4731 parent 95b21942 files · +20 −1Browse files

Showing the changes to libraries/script-engine/src/AssetScriptingInterface.cpp (1 of 2 files). Show all

Unified · Split

libraries/script-engine/src/AssetScriptingInterface.cpp+19−0
@@ -38,6 +38,25 @@ AssetScriptingInterface::AssetScriptingInterface(QObject* parent) : BaseAssetScr · 37 unmodified lines
3838
3939 #define JS_VERIFY(cond, error) { if (!this->jsVerify(cond, error)) { return; } }
4040
41+bool AssetScriptingInterface::initializeCache() {
42+ if (!Parent::initializeCache()) {
43+ if (assetClient()) {
44+ std::promise<bool> cacheStatusResult;
45+ Promise assetClientPromise(makePromise(__func__));
46+ assetClientPromise->moveToThread(qApp->thread()); // To ensure the finally() is processed.
47+
48+ assetClient()->cacheInfoRequestAsync(assetClientPromise);
49+ assetClientPromise->finally([&](QString, QVariantMap result)
50+ { cacheStatusResult.set_value(!result.isEmpty()); });
51+ return cacheStatusResult.get_future().get();
52+ } else {
53+ return false;
54+ }
55+ } else {
56+ return true;
57+ }
58+}
59+
4160 void AssetScriptingInterface::uploadData(QString data, QScriptValue callback) {
4261 auto handler = jsBindCallback(thisObject(), callback);
4362 QByteArray dataByteArray = data.toUtf8();

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t