Skip to content

Commit 5694128

Browse files
committed
Merge branch 'timeline-resume-state'
2 parents 8fffedb + 9414883 commit 5694128

4 files changed

Lines changed: 21 additions & 0 deletions

File tree

src/app/GUI/timelinedockwidget.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ TimelineDockWidget::TimelineDockWidget(Document& document,
6363
, mRenderProgressAct(nullptr)
6464
, mRenderProgress(nullptr)
6565
, mStepPreviewTimer(nullptr)
66+
, mPausedPreviewState({false, 0})
6667
{
6768
connect(RenderHandler::sInstance, &RenderHandler::previewFinished,
6869
this, &TimelineDockWidget::previewFinished);
@@ -438,6 +439,7 @@ bool TimelineDockWidget::processKeyPress(QKeyEvent *event)
438439

439440
void TimelineDockWidget::previewFinished()
440441
{
442+
mPausedPreviewState.first = false;
441443
if (const auto scene = *mDocument.fActiveScene) {
442444
scene->setGizmosSuppressed(false);
443445
}
@@ -490,6 +492,8 @@ void TimelineDockWidget::previewBeingRendered()
490492

491493
void TimelineDockWidget::previewPaused()
492494
{
495+
mPausedPreviewState = {true, mDocument.getActiveSceneFrame()};
496+
493497
if (const auto scene = *mDocument.fActiveScene) {
494498
scene->setGizmosSuppressed(false);
495499
}
@@ -543,6 +547,14 @@ bool TimelineDockWidget::setPrevKeyframe()
543547
void TimelineDockWidget::resumePreview()
544548
{
545549
if (eSettings::instance().fPreviewCache) {
550+
if (mPausedPreviewState.first) {
551+
const int frame = mDocument.getActiveSceneFrame();
552+
if (mPausedPreviewState.second != frame) {
553+
qDebug() << "set new start frame for preview" << frame;
554+
RenderHandler::sInstance->setPreviewFrame(frame);
555+
mPausedPreviewState.first = false;
556+
}
557+
}
546558
RenderHandler::sInstance->resumePreview();
547559
} else { setStepPreviewStart(); }
548560
}

src/app/GUI/timelinedockwidget.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,8 @@ class TimelineDockWidget : public QWidget
141141

142142
QList<TimelineWidget*> mTimelineWidgets;
143143
//AnimationDockWidget *mAnimationDockWidget;
144+
145+
QPair<bool,int> mPausedPreviewState;
144146
};
145147

146148
#endif // BOXESLISTANIMATIONDOCKWIDGET_H

src/app/renderhandler.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,11 @@ void RenderHandler::renderFromSettings(RenderInstanceSettings * const settings)
120120
}
121121
}
122122

123+
void RenderHandler::setPreviewFrame(const int &frame)
124+
{
125+
mCurrentPreviewFrame = frame;
126+
}
127+
123128
void RenderHandler::setLoop(const bool loop) {
124129
mLoop = loop;
125130
}

src/app/renderhandler.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ class RenderHandler : public QObject {
6262
void renderPreview();
6363
void renderFromSettings(RenderInstanceSettings * const settings);
6464

65+
void setPreviewFrame(const int &frame);
66+
6567
void setLoop(const bool loop);
6668

6769
PreviewState currentPreviewState() const

0 commit comments

Comments
 (0)