From 4460634758dd80e8a8ea76fe6a449b22f48ff721 Mon Sep 17 00:00:00 2001
From: Armin Felder <armin.felder@osalliance.com>
Date: Mon, 3 Dec 2018 03:39:42 +0100
Subject: [PATCH] use time for db transactions

---
 persistancelayer.cpp | 18 ++++++++++++------
 persistancelayer.h   |  3 +--
 2 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/persistancelayer.cpp b/persistancelayer.cpp
index ca6a802..b1b5ec2 100755
--- a/persistancelayer.cpp
+++ b/persistancelayer.cpp
@@ -374,17 +374,17 @@ void PersistanceLayer::commit( )
 {
     // mMutex.lock();
 
+    /* if ( mCommitCounter ) {
+         mCommitCounter--;
+     }
+    */
     if ( mCommitCounter ) {
-        mCommitCounter--;
-    }
-
-    if ( mCommitCounter == 0 ) {
         if ( !mDb.commit() ) {
             qWarning() << mDb.lastError();
         }
 
-        counter++;
-        qDebug() << "db commits" << counter;
+        mCommitCounter = 0;
+
     }
 
     // mMutex.unlock();
@@ -1451,6 +1451,12 @@ void PersistanceLayer::init()
             throw std::runtime_error( mDb.lastError().text().toStdString() + "file used:" + filePath.toStdString() );
         }
 
+        commitTimer.setInterval( 3000 );
+        commitTimer.start();
+        connect( &commitTimer, &QTimer::timeout, [&]() {
+            commit();
+            commitTimer.start();
+        } );
         mDbReady = true;
         initShema();
         emit( ready() );
diff --git a/persistancelayer.h b/persistancelayer.h
index b2029f3..f1b9186 100755
--- a/persistancelayer.h
+++ b/persistancelayer.h
@@ -98,8 +98,7 @@ class PersistanceLayer : public QObject
         PersistanceLayer() {}
         QSqlDatabase mDb{ QSqlDatabase::addDatabase( "QSQLITE" )};
         QMimeDatabase mMimeDb;
-        QMutex mMutex;
-        QAtomicInt counter = 0;
+        QTimer commitTimer;
         void initShema();
 
         void upgradeSchema();
-- 
GitLab