From 4ce5e4ac46c5b2b4e5cdeb13a55f4ba773ac52cf Mon Sep 17 00:00:00 2001 From: David Rowe Date: Thu, 21 Sep 2017 12:19:32 +1200 Subject: [PATCH 1/2] Fix recording just made not playing back if reload it --- .../src/RecordingScriptingInterface.cpp | 22 ++++++++++++++----- .../src/RecordingScriptingInterface.h | 3 +++ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/libraries/script-engine/src/RecordingScriptingInterface.cpp b/libraries/script-engine/src/RecordingScriptingInterface.cpp index b51e9cd529..164f2322a4 100644 --- a/libraries/script-engine/src/RecordingScriptingInterface.cpp +++ b/libraries/script-engine/src/RecordingScriptingInterface.cpp @@ -54,9 +54,24 @@ float RecordingScriptingInterface::playerLength() const { return _player->length(); } +void RecordingScriptingInterface::playClip(NetworkClipLoaderPointer clipLoader, const QString& url, QScriptValue callback) { + _player->queueClip(clipLoader->getClip()); + + if (callback.isFunction()) { + QScriptValueList args{ true, url }; + callback.call(_scriptEngine->globalObject(), args); + } +} + void RecordingScriptingInterface::loadRecording(const QString& url, QScriptValue callback) { auto clipLoader = DependencyManager::get()->getClipLoader(url); + if (clipLoader->isLoaded()) { + qCDebug(scriptengine) << "Recording already loaded from" << url; + playClip(clipLoader, url, callback); + return; + } + // hold a strong pointer to the loading clip so that it has a chance to load _clipLoaders.insert(clipLoader); @@ -69,12 +84,7 @@ void RecordingScriptingInterface::loadRecording(const QString& url, QScriptValue if (auto clipLoader = weakClipLoader.toStrongRef()) { qCDebug(scriptengine) << "Loaded recording from" << url; - _player->queueClip(clipLoader->getClip()); - - if (callback.isFunction()) { - QScriptValueList args { true, url }; - callback.call(_scriptEngine->globalObject(), args); - } + playClip(clipLoader, url, callback); // drop our strong pointer to this clip so it is cleaned up _clipLoaders.remove(clipLoader); diff --git a/libraries/script-engine/src/RecordingScriptingInterface.h b/libraries/script-engine/src/RecordingScriptingInterface.h index bc0b019251..22e4d30830 100644 --- a/libraries/script-engine/src/RecordingScriptingInterface.h +++ b/libraries/script-engine/src/RecordingScriptingInterface.h @@ -88,6 +88,9 @@ protected: QSharedPointer _scriptEngine; QSet _clipLoaders; + +private: + void playClip(recording::NetworkClipLoaderPointer clipLoader, const QString& url, QScriptValue callback); }; #endif // hifi_RecordingScriptingInterface_h From a2d8152a3a8031a810fd445038d7b9d8fe5ae3f5 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Fri, 22 Sep 2017 07:13:32 +1200 Subject: [PATCH 2/2] Coding standard --- libraries/script-engine/src/RecordingScriptingInterface.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/script-engine/src/RecordingScriptingInterface.cpp b/libraries/script-engine/src/RecordingScriptingInterface.cpp index 164f2322a4..55895e31a4 100644 --- a/libraries/script-engine/src/RecordingScriptingInterface.cpp +++ b/libraries/script-engine/src/RecordingScriptingInterface.cpp @@ -58,7 +58,7 @@ void RecordingScriptingInterface::playClip(NetworkClipLoaderPointer clipLoader, _player->queueClip(clipLoader->getClip()); if (callback.isFunction()) { - QScriptValueList args{ true, url }; + QScriptValueList args { true, url }; callback.call(_scriptEngine->globalObject(), args); } }