1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-11-22 12:33:29 +00:00

Switch to unique_ptr.

This commit is contained in:
Thomas Harte 2022-06-02 16:46:41 -04:00
parent 8ba1b4e0cf
commit e994910ff6
2 changed files with 5 additions and 6 deletions

View File

@ -88,16 +88,17 @@ DeferringAsyncTaskQueue::~DeferringAsyncTaskQueue() {
void DeferringAsyncTaskQueue::defer(std::function<void(void)> function) { void DeferringAsyncTaskQueue::defer(std::function<void(void)> function) {
if(!deferred_tasks_) { if(!deferred_tasks_) {
deferred_tasks_ = std::make_shared<std::list<std::function<void(void)>>>(); deferred_tasks_ = std::make_unique<std::list<std::function<void(void)>>>();
} }
deferred_tasks_->push_back(function); deferred_tasks_->push_back(function);
} }
void DeferringAsyncTaskQueue::perform() { void DeferringAsyncTaskQueue::perform() {
if(!deferred_tasks_) return; if(!deferred_tasks_) return;
std::shared_ptr<std::list<std::function<void(void)>>> deferred_tasks = deferred_tasks_; auto deferred_tasks_raw = deferred_tasks_.release();
deferred_tasks_.reset(); deferred_tasks_.reset();
enqueue([deferred_tasks] { enqueue([deferred_tasks_raw] {
std::unique_ptr<std::list<std::function<void(void)>>> deferred_tasks(deferred_tasks_raw);
for(const auto &function : *deferred_tasks) { for(const auto &function : *deferred_tasks) {
function(); function();
} }

View File

@ -93,9 +93,7 @@ class DeferringAsyncTaskQueue: public AsyncTaskQueue {
void flush(); void flush();
private: private:
// TODO: this is a shared_ptr because of the issues capturing moveables in C++11; std::unique_ptr<std::list<std::function<void(void)>>> deferred_tasks_;
// switch to a unique_ptr if/when adapting to C++14
std::shared_ptr<std::list<std::function<void(void)>>> deferred_tasks_;
}; };
} }