reapack

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

commit b0316a45ce474785fc05a01ed45b9c98f755ae91
parent 22817b0d0706d3910210d2139c62abd9858d6b8d
Author: cfillion <cfillion@users.noreply.github.com>
Date:   Sun, 17 Jan 2016 17:33:23 -0500

exclusively lock the database when a transaction is running

Diffstat:
Msrc/registry.cpp | 8++++++++
Msrc/registry.hpp | 1+
Msrc/transaction.cpp | 2++
3 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/src/registry.cpp b/src/registry.cpp @@ -51,6 +51,9 @@ Registry::Registry(const Path &path) "WHERE remote = ? AND category = ? AND package = ? " "LIMIT 1" ); + + // lock the database + m_db.exec("BEGIN EXCLUSIVE TRANSACTION"); } void Registry::push(Version *ver) @@ -93,6 +96,11 @@ Registry::QueryResult Registry::query(Package *pkg) const return {status, version}; } +void Registry::commit() +{ + m_db.exec("COMMIT TRANSACTION"); +} + bool Registry::addToREAPER(Version *ver, const Path &root) { if(ver->package()->type() != Package::ScriptType) diff --git a/src/registry.hpp b/src/registry.hpp @@ -44,6 +44,7 @@ public: }; void push(Version *); + void commit(); bool addToREAPER(Version *ver, const Path &root); diff --git a/src/transaction.cpp b/src/transaction.cpp @@ -192,6 +192,8 @@ void Transaction::finish() if(!m_isCancelled) { for(Task *task : m_tasks) task->commit(); + + m_registry->commit(); } m_onFinish();