From 484bc5dd018b041ea78affb3ca42e5c57a0d42ba Mon Sep 17 00:00:00 2001 From: Jonathan White Date: Sun, 6 Jun 2021 11:58:52 -0400 Subject: [PATCH] Fix infinite save bug when saving fails * Introduced in #6438, modified signal is not blocked at the Database level when emitting is blocked. This causes infinite saving to occur when Always Save After Every Change is enabled. --- src/core/Database.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/core/Database.cpp b/src/core/Database.cpp index d9ace8c2e..e29403fcf 100644 --- a/src/core/Database.cpp +++ b/src/core/Database.cpp @@ -875,7 +875,7 @@ bool Database::hasNonDataChanges() const void Database::markAsModified() { m_modified = true; - if (!m_modifiedTimer.isActive()) { + if (modifiedSignalEnabled() && !m_modifiedTimer.isActive()) { // Small time delay prevents numerous consecutive saves due to repeated signals startModifiedTimer(); } @@ -942,11 +942,13 @@ bool Database::changeKdf(const QSharedPointer& kdf) return true; } +// Prevent warning about QTimer not allowed to be started/stopped from other thread void Database::startModifiedTimer() { QMetaObject::invokeMethod(&m_modifiedTimer, "start", Q_ARG(int, 150)); } +// Prevent warning about QTimer not allowed to be started/stopped from other thread void Database::stopModifiedTimer() { QMetaObject::invokeMethod(&m_modifiedTimer, "stop");