Safely close database connections and delete backends

Also fix NewClosure leak caused by disconnected object signals
This commit is contained in:
Jonas Kvinge
2019-07-24 19:16:51 +02:00
parent bd78e8c275
commit b5eb13449b
47 changed files with 490 additions and 53 deletions

View File

@@ -22,6 +22,7 @@
#include "closure.h"
#include "core/logging.h"
#include "core/timeconstants.h"
namespace _detail {
@@ -30,8 +31,7 @@ ClosureBase::ClosureBase(ObjectHelper *helper)
: helper_(helper) {
}
ClosureBase::~ClosureBase() {
}
ClosureBase::~ClosureBase() {}
CallbackClosure::CallbackClosure(QObject *sender, const char *signal, std::function<void()> callback)
: ClosureBase(new ObjectHelper(sender, signal, this)),
@@ -53,6 +53,8 @@ ObjectHelper::ObjectHelper(QObject *sender, const char *signal, ClosureBase *clo
}
ObjectHelper::~ObjectHelper() {}
void ObjectHelper::Invoked() {
closure_->Invoke();
deleteLater();

View File

@@ -34,6 +34,8 @@
#include <QList>
#include <QTimer>
#include "core/logging.h"
namespace _detail {
class ObjectHelper;
@@ -62,6 +64,7 @@ class ObjectHelper : public QObject {
Q_OBJECT
public:
ObjectHelper(QObject *parent, const char *signal, ClosureBase *closure);
~ObjectHelper();
private slots:
void Invoked();