[graphics/krita] libs: Add a (hidden) config option to increase frame rendering timeout

Dmitry Kazakov null at kde.org
Wed Jul 7 09:29:45 BST 2021


Git commit 2d9a0878a2ea35c0708f91f38ed8a3075735cd4c by Dmitry Kazakov.
Committed on 07/07/2021 at 08:29.
Pushed by dkazakov into branch 'master'.

Add a (hidden) config option to increase frame rendering timeout

If you see random failures while rendering frames for huge images,
just open kritarc file and add the following option:

frameRenderingTimeout=60000

Where '60000' is the timeout in milliseconds. The default value is
30 seconds and it seems like it is too small for some weird usecases.

CCBUG:438754
CC:kimageshop at kde.org

M  +11   -0    libs/image/kis_image_config.cpp
M  +3    -0    libs/image/kis_image_config.h
M  +6    -3    libs/ui/KisAsyncAnimationRendererBase.cpp

https://invent.kde.org/graphics/krita/commit/2d9a0878a2ea35c0708f91f38ed8a3075735cd4c

diff --git a/libs/image/kis_image_config.cpp b/libs/image/kis_image_config.cpp
index 9b6fe746ed..9a0f7553fe 100644
--- a/libs/image/kis_image_config.cpp
+++ b/libs/image/kis_image_config.cpp
@@ -555,6 +555,17 @@ void KisImageConfig::setFrameRenderingClones(int value)
     m_config.writeEntry("frameRenderingClones", value);
 }
 
+int KisImageConfig::frameRenderingTimeout(bool defaultValue) const
+{
+    const int defaultFrameRenderingTimeout = 30000; // 30 ms
+    return defaultValue ? defaultFrameRenderingTimeout : m_config.readEntry("frameRenderingTimeout", defaultFrameRenderingTimeout);
+}
+
+void KisImageConfig::setFrameRenderingTimeout(int value)
+{
+    m_config.writeEntry("frameRenderingTimeout", value);
+}
+
 int KisImageConfig::fpsLimit(bool defaultValue) const
 {
     int limit = defaultValue ? 100 : m_config.readEntry("fpsLimit", 100);
diff --git a/libs/image/kis_image_config.h b/libs/image/kis_image_config.h
index 74c941d6db..4b0d833429 100644
--- a/libs/image/kis_image_config.h
+++ b/libs/image/kis_image_config.h
@@ -108,6 +108,9 @@ public:
     int frameRenderingClones(bool defaultValue = false) const;
     void setFrameRenderingClones(int value);
 
+    int frameRenderingTimeout(bool defaultValue = false) const;
+    void setFrameRenderingTimeout(int value);
+
     int fpsLimit(bool defaultValue = false) const;
     void setFpsLimit(int value);
 
diff --git a/libs/ui/KisAsyncAnimationRendererBase.cpp b/libs/ui/KisAsyncAnimationRendererBase.cpp
index 7da1bd6a63..694b160552 100644
--- a/libs/ui/KisAsyncAnimationRendererBase.cpp
+++ b/libs/ui/KisAsyncAnimationRendererBase.cpp
@@ -12,6 +12,8 @@
 #include "kis_image.h"
 #include "kis_image_animation_interface.h"
 #include "kis_signal_auto_connection.h"
+#include "kis_image_config.h"
+
 
 struct KRITAUI_NO_EXPORT KisAsyncAnimationRendererBase::Private
 {
@@ -23,8 +25,6 @@ struct KRITAUI_NO_EXPORT KisAsyncAnimationRendererBase::Private
     int requestedFrame = -1;
     bool isCancelled = false;
     KisRegion requestedRegion;
-
-    static const int WAITING_FOR_FRAME_TIMEOUT = 30000;
 };
 
 KisAsyncAnimationRendererBase::KisAsyncAnimationRendererBase(QObject *parent)
@@ -32,8 +32,11 @@ KisAsyncAnimationRendererBase::KisAsyncAnimationRendererBase(QObject *parent)
       m_d(new Private())
 {
     connect(&m_d->regenerationTimeout, SIGNAL(timeout()), SLOT(slotFrameRegenerationCancelled()));
+
+    KisImageConfig cfg(true);
+
     m_d->regenerationTimeout.setSingleShot(true);
-    m_d->regenerationTimeout.setInterval(Private::WAITING_FOR_FRAME_TIMEOUT);
+    m_d->regenerationTimeout.setInterval(cfg.frameRenderingTimeout());
 }
 
 KisAsyncAnimationRendererBase::~KisAsyncAnimationRendererBase()


More information about the kimageshop mailing list