diff --git a/src/app/GUI/RenderWidgets/renderwidget.cpp b/src/app/GUI/RenderWidgets/renderwidget.cpp index 67106afa4..99e73248f 100644 --- a/src/app/GUI/RenderWidgets/renderwidget.cpp +++ b/src/app/GUI/RenderWidgets/renderwidget.cpp @@ -299,6 +299,17 @@ void RenderWidget::render(RenderInstanceSettings &settings) mRenderProgressBar->setValue(renderSettings.fMinFrame); handleRenderState(RenderState::waiting); mCurrentRenderedSettings = &settings; + + // the scene we want to render MUST be current if multiple scenes are in queue + const auto scene = mCurrentRenderedSettings->getTargetCanvas(); + if (scene) { + const auto handler = MainWindow::sGetInstance()->getLayoutHandler(); + const int index = handler->getSceneId(scene); + if (index > -1 && !handler->isCurrentScene(index)) { + handler->setCurrentScene(index); + } + } + RenderHandler::sInstance->renderFromSettings(&settings); connect(&settings, &RenderInstanceSettings::renderFrameChanged, this, &RenderWidget::setRenderedFrame); diff --git a/src/app/GUI/layouthandler.h b/src/app/GUI/layouthandler.h index 2eb147f2e..ba8f67c54 100644 --- a/src/app/GUI/layouthandler.h +++ b/src/app/GUI/layouthandler.h @@ -186,6 +186,10 @@ class LayoutHandler : public QObject { mNumberLayouts - nCLays + relCurrentId; setCurrent(absId); } + int getSceneId(const Canvas* const scene) { return sceneId(scene); }; + bool isCurrentScene(const int index) { return index == mCurrentId; }; + void setCurrentScene(const int index) { setCurrent(index); }; + private: void rename(const int id, const QString& newName) { auto& layout = mLayouts[uint(id)]; diff --git a/src/app/GUI/mainwindow.cpp b/src/app/GUI/mainwindow.cpp index 47b97b8c4..e12ac15da 100644 --- a/src/app/GUI/mainwindow.cpp +++ b/src/app/GUI/mainwindow.cpp @@ -2148,6 +2148,11 @@ void MainWindow::cmdAddAction(QAction *act) eSettings::sInstance->fCommandPalette.append(act); } +LayoutHandler *MainWindow::getLayoutHandler() +{ + return mLayoutHandler; +} + stdsptr<void> MainWindow::lock() { if (mLock) { return mLock->ref<Lock>(); } diff --git a/src/app/GUI/mainwindow.h b/src/app/GUI/mainwindow.h index 8c3141bb3..4570ac14e 100644 --- a/src/app/GUI/mainwindow.h +++ b/src/app/GUI/mainwindow.h @@ -193,6 +193,7 @@ class MainWindow : public QMainWindow void updateAutoSaveBackupState(); void openRendererWindow(); void cmdAddAction(QAction *act); + LayoutHandler* getLayoutHandler(); protected: void lockFinished();