From 96ca0cb686956cba971081e15807043fba1894e2 Mon Sep 17 00:00:00 2001 From: Gary Talent Date: Sat, 19 Mar 2022 19:32:30 -0500 Subject: [PATCH] [nostalgia/studio] Add finished signal to Task --- src/nostalgia/studio/lib/task.cpp | 6 +++++- src/nostalgia/studio/lib/task.hpp | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/nostalgia/studio/lib/task.cpp b/src/nostalgia/studio/lib/task.cpp index c22399843..77f0c63ba 100644 --- a/src/nostalgia/studio/lib/task.cpp +++ b/src/nostalgia/studio/lib/task.cpp @@ -10,7 +10,11 @@ namespace nostalgia::studio { void TaskRunner::update(core::Context *ctx) noexcept { oxIgnoreError(m_tasks.erase(std::remove_if(m_tasks.begin(), m_tasks.end(), [&](auto &t) { - return t->update(ctx) == TaskState::Done; + const auto done = t->update(ctx) == TaskState::Done; + if (done) { + t->finished.emit(); + } + return done; }))); } diff --git a/src/nostalgia/studio/lib/task.hpp b/src/nostalgia/studio/lib/task.hpp index cd77fc03f..6380c9f5f 100644 --- a/src/nostalgia/studio/lib/task.hpp +++ b/src/nostalgia/studio/lib/task.hpp @@ -17,6 +17,7 @@ enum class TaskState { class Task: public ox::SignalHandler { public: + ox::Signal finished; ~Task() noexcept override = default; virtual TaskState update(nostalgia::core::Context *ctx) noexcept = 0; }; @@ -29,4 +30,4 @@ class TaskRunner { void add(Task *task) noexcept; }; -} \ No newline at end of file +}