History

Fix recording just made not playing back if reload it

David Rowe committed 9 years ago

Commit 4ce5e4a1 parent a4082dc2 files · +19 −6Browse files

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

Unified · Split

libraries/script-engine/src/RecordingScriptingInterface.cpp+16−6
@@ -54,9 +54,24 @@ float RecordingScriptingInterface::playerLength() const { · 53 unmodified lines
5454 return _player->length();
5555 }
5656
57+void RecordingScriptingInterface::playClip(NetworkClipLoaderPointer clipLoader, const QString& url, QScriptValue callback) {
58+ _player->queueClip(clipLoader->getClip());
59+
60+ if (callback.isFunction()) {
61+ QScriptValueList args{ true, url };
62+ callback.call(_scriptEngine->globalObject(), args);
63+ }
64+}
65+
5766 void RecordingScriptingInterface::loadRecording(const QString& url, QScriptValue callback) {
5867 auto clipLoader = DependencyManager::get<recording::ClipCache>()->getClipLoader(url);
5968
69+ if (clipLoader->isLoaded()) {
70+ qCDebug(scriptengine) << "Recording already loaded from" << url;
71+ playClip(clipLoader, url, callback);
72+ return;
73+ }
74+
6075 // hold a strong pointer to the loading clip so that it has a chance to load
6176 _clipLoaders.insert(clipLoader);
6277
@@ -69,12 +84,7 @@ void RecordingScriptingInterface::loadRecording(const QString& url, QScriptValue · 6 unmodified lines
6984 if (auto clipLoader = weakClipLoader.toStrongRef()) {
7085 qCDebug(scriptengine) << "Loaded recording from" << url;
7186
72− _player->queueClip(clipLoader->getClip());
73−
74− if (callback.isFunction()) {
75− QScriptValueList args { true, url };
76− callback.call(_scriptEngine->globalObject(), args);
77− }
87+ playClip(clipLoader, url, callback);
7888
7989 // drop our strong pointer to this clip so it is cleaned up
8090 _clipLoaders.remove(clipLoader);