diff --git a/SDK/CPP/private/pipeline_impl.cpp b/SDK/CPP/private/pipeline_impl.cpp index cdc52fce3eb188cabf35a2e2e80353398e4a23ef..7fbbc5131cc0f3d6edc67a5f413bac31ca2a9ba7 100644 --- a/SDK/CPP/private/pipeline_impl.cpp +++ b/SDK/CPP/private/pipeline_impl.cpp @@ -42,10 +42,12 @@ void PipelineImpl::submit(const voltu::FramePtr &frame) } } -bool PipelineImpl::waitCompletion(int timeout) +bool PipelineImpl::waitCompletion(int timeout, bool except) { int count = timeout / 5; while (!ready_ && --count >= 0) std::this_thread::sleep_for(std::chrono::milliseconds(5)); + + if (!ready_) throw voltu::exceptions::Timeout(); return ready_; } diff --git a/SDK/CPP/private/pipeline_impl.hpp b/SDK/CPP/private/pipeline_impl.hpp index 98fe41c9018fe328c1cb296e3819d052a8808a73..3413f067a20bfe06bd55c9373b9bc8eb4ac73026 100644 --- a/SDK/CPP/private/pipeline_impl.hpp +++ b/SDK/CPP/private/pipeline_impl.hpp @@ -16,7 +16,7 @@ public: void submit(const voltu::FramePtr &frame) override; - bool waitCompletion(int timeout) override; + bool waitCompletion(int timeout, bool except) override; voltu::OperatorPtr appendOperator(voltu::OperatorId id) override; diff --git a/SDK/CPP/public/include/voltu/pipeline.hpp b/SDK/CPP/public/include/voltu/pipeline.hpp index f8a201bac088192866886505050b2bce07b51acd..4e2c4ee89d512d22f7e7e675323d09ec3598d9c4 100644 --- a/SDK/CPP/public/include/voltu/pipeline.hpp +++ b/SDK/CPP/public/include/voltu/pipeline.hpp @@ -64,7 +64,7 @@ public: * @param timeout Millisecond timeout, or 0 for non-blocking check. * @return True if completed */ - PY_API virtual bool waitCompletion(int timeout) = 0; + PY_API virtual bool waitCompletion(int timeout, bool except=false) = 0; /** * @brief Add an operator to this pipeline. diff --git a/SDK/CPP/public/include/voltu/voltu.hpp b/SDK/CPP/public/include/voltu/voltu.hpp index d3e1413b4052c065709aaa7591a9c93d37e7550d..c59518dcf75541a5dca78b6bc6e94dbd83c92047 100644 --- a/SDK/CPP/public/include/voltu/voltu.hpp +++ b/SDK/CPP/public/include/voltu/voltu.hpp @@ -8,7 +8,7 @@ // Bump these for each release #define VOLTU_VERSION_MAJOR 0 // For API incompatible changes -#define VOLTU_VERSION_MINOR 3 // For binary compatibility and extensions +#define VOLTU_VERSION_MINOR 4 // For binary compatibility and extensions #define VOLTU_VERSION_PATCH 0 // Binary compatible internal fixes #define VOLTU_VERSION ((VOLTU_VERSION_MAJOR*10000) + (VOLTU_VERSION_MINOR*100) + VOLTU_VERSION_PATCH) diff --git a/SDK/CPP/public/samples/fusion_evaluator/main.cpp b/SDK/CPP/public/samples/fusion_evaluator/main.cpp index 85abd616a41613eb1f77073e8692a918e02641c5..b56ab129b6af9a40468e33bf795e4bf99a2af0ff 100644 --- a/SDK/CPP/public/samples/fusion_evaluator/main.cpp +++ b/SDK/CPP/public/samples/fusion_evaluator/main.cpp @@ -91,7 +91,7 @@ int main(int argc, char **argv) for (int i=0; i<frameno; ++i) { - room->waitNextFrame(5000); + room->waitNextFrame(5000, true); room->getFrame(); } auto frame = room->getFrame(); @@ -108,7 +108,7 @@ int main(int argc, char **argv) op1->property("mls_iterations")->setInt(iters); pipe->submit(frame); - pipe->waitCompletion(3000); + pipe->waitCompletion(3000, true); auto imgset = frame->getImageSet(display_channel);