reapack

Package manager for REAPER
Log | Files | Refs | Submodules | README | LICENSE

commit 36998c591f413a0e695c816fc3fc82a2d34676a6
parent a62322619e54179eb487e0b8404329e7dfb643cb
Author: cfillion <cfillion@users.noreply.github.com>
Date:   Wed, 16 Dec 2015 13:52:51 -0500

split the onFinish and onDestroy events, to help prevent future bugs

Diffstat:
Msrc/download.cpp | 8++++++--
Msrc/download.hpp | 2++
Msrc/reapack.cpp | 6+++---
Msrc/transaction.cpp | 1+
Msrc/transaction.hpp | 2++
5 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/src/download.cpp b/src/download.cpp @@ -184,6 +184,7 @@ void Download::finishInMainThread() } m_onFinish(); + m_onDestroy(); } bool Download::isFinished() @@ -216,13 +217,16 @@ void DownloadQueue::push(Download *dl) { m_onPush(dl); - dl->onFinish([=]() { + dl->onFinish([=] { m_running.erase(remove(m_running.begin(), m_running.end(), dl)); - delete dl; start(); }); + dl->onDestroy([=] { + delete dl; + }); + m_queue.push(dl); start(); diff --git a/src/download.hpp b/src/download.hpp @@ -29,6 +29,7 @@ public: void onStart(const Callback &callback) { m_onStart.connect(callback); } void onFinish(const Callback &callback) { m_onFinish.connect(callback); } + void onDestroy(const Callback &callback) { m_onDestroy.connect(callback); } void start(); void abort(); @@ -63,6 +64,7 @@ private: Signal m_onStart; Signal m_onFinish; + Signal m_onDestroy; }; class DownloadQueue { diff --git a/src/reapack.cpp b/src/reapack.cpp @@ -163,15 +163,15 @@ Transaction *ReaPack::createTransaction() m_progress->setEnabled(true); m_progress->hide(); + + m_config->write(); }); - m_transaction->onFinish([=] { + m_transaction->onDestroy([=] { m_progress->setTransaction(nullptr); delete m_transaction; m_transaction = nullptr; - - m_config->write(); }); return m_transaction; diff --git a/src/transaction.cpp b/src/transaction.cpp @@ -160,6 +160,7 @@ void Transaction::finish() } m_onFinish(); + m_onDestroy(); } void Transaction::addError(const string &message, const string &title) diff --git a/src/transaction.hpp b/src/transaction.hpp @@ -31,6 +31,7 @@ public: void onReady(const Callback &callback) { m_onReady.connect(callback); } void onFinish(const Callback &callback) { m_onFinish.connect(callback); } + void onDestroy(const Callback &callback) { m_onDestroy.connect(callback); } void fetch(const RemoteMap &); void fetch(const Remote &); @@ -76,6 +77,7 @@ private: Signal m_onReady; Signal m_onFinish; + Signal m_onDestroy; }; #endif