diff --git a/toonz/sources/toonz/previewer.cpp b/toonz/sources/toonz/previewer.cpp index 8ec40c6..0902d94 100644 --- a/toonz/sources/toonz/previewer.cpp +++ b/toonz/sources/toonz/previewer.cpp @@ -1281,6 +1281,17 @@ bool Previewer::isFrameReady(int frame) const { //----------------------------------------------------------------------------- +void Previewer::clearAllUnfinishedFrames() { + for (int f = 0; f < m_imp->m_pbStatus.size(); f++) { + if (m_imp->m_pbStatus[f] == FlipSlider::PBFrameStarted) { + m_imp->remove(f); + } + } + m_imp->updateProgressBarStatus(); +} + +//----------------------------------------------------------------------------- + bool Previewer::isActive() const { return !m_imp->m_listeners.empty(); } //----------------------------------------------------------------------------- diff --git a/toonz/sources/toonz/previewer.h b/toonz/sources/toonz/previewer.h index 6cb270e..046ec38 100644 --- a/toonz/sources/toonz/previewer.h +++ b/toonz/sources/toonz/previewer.h @@ -88,6 +88,8 @@ public: std::vector &getProgressBarStatus() const; + void clearAllUnfinishedFrames(); + private: friend class Imp; void emitStartedFrame(const TRenderPort::RenderData &renderData); diff --git a/toonz/sources/toonz/sceneviewer.cpp b/toonz/sources/toonz/sceneviewer.cpp index ca4e52c..d22e441 100644 --- a/toonz/sources/toonz/sceneviewer.cpp +++ b/toonz/sources/toonz/sceneviewer.cpp @@ -948,9 +948,12 @@ void SceneViewer::enablePreview(int previewMode) { emit freezeStateChanged(false); } - if (m_previewMode != NO_PREVIEW) + if (m_previewMode != NO_PREVIEW) { Previewer::instance(m_previewMode == SUBCAMERA_PREVIEW) ->removeListener(this); + Previewer::instance(m_previewMode == SUBCAMERA_PREVIEW) + ->clearAllUnfinishedFrames(); + } m_previewMode = previewMode;