From 51c1cc7a8385fcb8daf5e60564e76e0051a07605 Mon Sep 17 00:00:00 2001 From: mfeemster Date: Tue, 7 Jun 2016 20:37:15 -0700 Subject: [PATCH] --Bug fixes -Switching between SP and DP before previews had finished would set the current flame back to the first one in the file. --- Source/Fractorium/FractoriumEmberController.h | 4 ++-- Source/Fractorium/FractoriumMenus.cpp | 13 +++++++------ Source/Fractorium/FractoriumRender.cpp | 4 ++-- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/Source/Fractorium/FractoriumEmberController.h b/Source/Fractorium/FractoriumEmberController.h index d12cf16..3866526 100644 --- a/Source/Fractorium/FractoriumEmberController.h +++ b/Source/Fractorium/FractoriumEmberController.h @@ -95,7 +95,7 @@ public: virtual void OpenAndPrepFiles(const QStringList& filenames, bool append) { } virtual void SaveCurrentAsXml() { } virtual void SaveEntireFileAsXml() { } - virtual uint SaveCurrentToOpenedFile() { return 0; } + virtual uint SaveCurrentToOpenedFile(bool render = true) { return 0; } virtual void Undo() { }//Edit. virtual void Redo() { } virtual void CopyXml() { } @@ -339,7 +339,7 @@ public: virtual void OpenAndPrepFiles(const QStringList& filenames, bool append) override; virtual void SaveCurrentAsXml() override; virtual void SaveEntireFileAsXml() override; - virtual uint SaveCurrentToOpenedFile() override; + virtual uint SaveCurrentToOpenedFile(bool render = true) override; virtual void Undo() override; virtual void Redo() override; virtual void CopyXml() override; diff --git a/Source/Fractorium/FractoriumMenus.cpp b/Source/Fractorium/FractoriumMenus.cpp index 5820813..dcfef8f 100644 --- a/Source/Fractorium/FractoriumMenus.cpp +++ b/Source/Fractorium/FractoriumMenus.cpp @@ -370,8 +370,9 @@ void Fractorium::OnActionSaveCurrentScreen(bool checked) /// preview renderer. /// This does not save to disk. /// +/// Whether to re-render the preview thumbnail after saving to the open file. Default: true. template -uint FractoriumEmberController::SaveCurrentToOpenedFile() +uint FractoriumEmberController::SaveCurrentToOpenedFile(bool render) { uint i = 0; bool fileFound = false; @@ -395,12 +396,12 @@ uint FractoriumEmberController::SaveCurrentToOpenedFile() StopPreviewRender(); m_EmberFile.m_Embers.push_back(m_Ember); m_EmberFile.MakeNamesUnique(); - UpdateLibraryTree(); + + if (render) + UpdateLibraryTree(); } - else - { + else if (render) RenderPreviews(i, i + 1); - } } return i; @@ -832,7 +833,7 @@ void Fractorium::OnActionFinalRender(bool checked) //First completely stop what the current rendering process is doing. m_Controller->DeleteRenderer();//Delete the renderer, but not the controller. m_Controller->StopPreviewRender(); - m_Controller->SaveCurrentToOpenedFile();//Save whatever was edited back to the current open file. + m_Controller->SaveCurrentToOpenedFile(false);//Save whatever was edited back to the current open file. m_RenderStatusLabel->setText("Renderer stopped."); m_FinalRenderDialog->show(); } diff --git a/Source/Fractorium/FractoriumRender.cpp b/Source/Fractorium/FractoriumRender.cpp index 6b55742..7026111 100644 --- a/Source/Fractorium/FractoriumRender.cpp +++ b/Source/Fractorium/FractoriumRender.cpp @@ -690,8 +690,8 @@ bool Fractorium::CreateControllerFromOptions() if (m_Controller.get()) { scale = m_Controller->LockedScale(); - current = m_Controller->SaveCurrentToOpenedFile(); - m_Controller->StopPreviewRender();//Must stop any previews first, else changing controllers will crash the program. + m_Controller->StopPreviewRender();//Must stop any previews first, else changing controllers will crash the program and SaveCurrentToOpenedFile() will return 0. + current = m_Controller->SaveCurrentToOpenedFile(false); m_Controller->CopyTempPalette(tempPalette);//Convert float to double or save double verbatim; //Replace below with this once LLVM fixes a crash in their compiler with default lambda parameters.//TODO //m_Controller->CopyEmber(ed);