20 qRegisterMetaType<KisAsyncAnimationRendererBase::CancelReason>(
"KisAsyncAnimationRendererBase::CancelReason");
30 int requestedFrame = -1;
31 bool isCancelled =
false;
43 m_d->regenerationTimeout.setSingleShot(
true);
56 m_d->requestedImage = image;
57 m_d->requestedFrame = frame;
58 m_d->isCancelled =
false;
59 m_d->requestedRegion = !regionOfInterest.
isEmpty() ? regionOfInterest : image->
bounds();
63 m_d->imageRequestConnections.clear();
64 m_d->imageRequestConnections.addConnection(
65 animation, SIGNAL(sigFrameReady(
int)),
67 Qt::DirectConnection);
69 m_d->imageRequestConnections.addConnection(
74 m_d->regenerationTimeout.start();
85 return m_d->requestedImage;
97 if (!
m_d->requestedImage)
return;
104 if (!
m_d->requestedImage)
return;
112 if (!
m_d->requestedImage)
return;
128 if (
m_d->isCancelled)
return;
150 if (
m_d->isCancelled)
return;
171 m_d->imageRequestConnections.clear();
172 m_d->requestedImage = 0;
173 m_d->requestedFrame = -1;
174 m_d->regenerationTimeout.stop();
175 m_d->isCancelled =
true;
181 return m_d->requestedImage;
KIS_DECLARE_STATIC_INITIALIZER
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
void requestFrameRegeneration(int frameId, const KisRegion &dirtyRegion, bool isCancellable, KisLockFrameGenerationLock &&lock)
int frameRenderingTimeout(bool defaultValue=false) const
QRect bounds() const override
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
#define KIS_SAFE_ASSERT_RECOVER_NOOP(cond)
void slotFrameRegenerationTimedOut()
KisImageSP requestedImage
void sigFrameCancelled(int frame, KisAsyncAnimationRendererBase::CancelReason cancelReason)
void slotFrameRegenerationCancelled()
virtual ~KisAsyncAnimationRendererBase()
void notifyFrameCompleted(int frame)
void notifyFrameCancelled(int frame, KisAsyncAnimationRendererBase::CancelReason cancelReason)
virtual void frameCancelledCallback(int frame, CancelReason cancelReason)=0
frameCancelledCallback is called when the rendering of the frame was cancelled.
KisSignalAutoConnectionsStore imageRequestConnections
KisAsyncAnimationRendererBase(QObject *parent=0)
void slotFrameRegenerationFinished(int frame)
virtual void clearFrameRegenerationState(bool isCancelled)
virtual void frameCompletedCallback(int frame, const KisRegion &requestedRegion)=0
frameCompletedCallback is called by the renderer when a new frame becomes ready
QTimer regenerationTimeout
KisRegion requestedRegion
const QScopedPointer< Private > m_d
void startFrameRegeneration(KisImageSP image, int frame, const KisRegion ®ionOfInterest, Flags flags, KisLockFrameGenerationLock &&frameGenerationLock)
void sigFrameCompleted(int frame)
void cancelCurrentFrameRendering(CancelReason cancelReason)
cancels current rendering operation