Safely close database connections and delete backends
Also fix NewClosure leak caused by disconnected object signals
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user