[nostalgia/studio] Add finished signal to Task
This commit is contained in:
		| @@ -10,7 +10,11 @@ namespace nostalgia::studio { | |||||||
|  |  | ||||||
| void TaskRunner::update(core::Context *ctx) noexcept { | void TaskRunner::update(core::Context *ctx) noexcept { | ||||||
| 	oxIgnoreError(m_tasks.erase(std::remove_if(m_tasks.begin(), m_tasks.end(), [&](auto &t) { | 	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; | ||||||
| 	}))); | 	}))); | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -17,6 +17,7 @@ enum class TaskState { | |||||||
|  |  | ||||||
| class Task: public ox::SignalHandler { | class Task: public ox::SignalHandler { | ||||||
| 	public: | 	public: | ||||||
|  | 		ox::Signal<ox::Error()> finished; | ||||||
| 		~Task() noexcept override = default; | 		~Task() noexcept override = default; | ||||||
| 		virtual TaskState update(nostalgia::core::Context *ctx) noexcept = 0; | 		virtual TaskState update(nostalgia::core::Context *ctx) noexcept = 0; | ||||||
| }; | }; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user