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

@@ -40,6 +40,7 @@ class DeviceDatabaseBackend : public QObject {
public:
Q_INVOKABLE DeviceDatabaseBackend(QObject *parent = nullptr);
~DeviceDatabaseBackend();
struct Device {
Device() : id_(-1) {}
@@ -58,6 +59,9 @@ class DeviceDatabaseBackend : public QObject {
static const int kDeviceSchemaVersion;
void Init(Database *db);
void Close();
void ExitAsync();
Database *db() const { return db_; }
DeviceList GetAllDevices();
@@ -66,8 +70,16 @@ class DeviceDatabaseBackend : public QObject {
void SetDeviceOptions(int id, const QString &friendly_name, const QString &icon_name, MusicStorage::TranscodeMode mode, Song::FileType format);
private slots:
void Exit();
signals:
void ExitFinished();
private:
Database *db_;
QThread *original_thread_;
};
#endif // DEVICEDATABASEBACKEND_H