From 91fd578f4913e72ac996777678e6375371266f9a Mon Sep 17 00:00:00 2001 From: heckflosse Date: Fri, 15 Sep 2017 22:09:45 +0200 Subject: [PATCH] Write PP3 before processing image, not after. Hopefully fixes #2494 --- rtgui/editorpanel.cc | 14 +++++++------- rtgui/editorpanel.h | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/rtgui/editorpanel.cc b/rtgui/editorpanel.cc index f1835be89..4ea4e5099 100644 --- a/rtgui/editorpanel.cc +++ b/rtgui/editorpanel.cc @@ -1734,15 +1734,18 @@ bool EditorPanel::idle_saveImage (ProgressConnector *pc, Gl ProgressConnector *ld = new ProgressConnector(); img->setSaveProgressListener (parent->getProgressListener()); + rtengine::procparams::ProcParams pparams; + ipc->getParams (&pparams); + if (sf.format == "tif") ld->startFunc (sigc::bind (sigc::mem_fun (img, &rtengine::IImage16::saveAsTIFF), fname, sf.tiffBits, sf.tiffUncompressed), - sigc::bind (sigc::mem_fun (*this, &EditorPanel::idle_imageSaved), ld, img, fname, sf)); + sigc::bind (sigc::mem_fun (*this, &EditorPanel::idle_imageSaved), ld, img, fname, sf, pparams)); else if (sf.format == "png") ld->startFunc (sigc::bind (sigc::mem_fun (img, &rtengine::IImage16::saveAsPNG), fname, sf.pngCompression, sf.pngBits), - sigc::bind (sigc::mem_fun (*this, &EditorPanel::idle_imageSaved), ld, img, fname, sf)); + sigc::bind (sigc::mem_fun (*this, &EditorPanel::idle_imageSaved), ld, img, fname, sf, pparams)); else if (sf.format == "jpg") ld->startFunc (sigc::bind (sigc::mem_fun (img, &rtengine::IImage16::saveAsJPEG), fname, sf.jpegQuality, sf.jpegSubSamp), - sigc::bind (sigc::mem_fun (*this, &EditorPanel::idle_imageSaved), ld, img, fname, sf)); + sigc::bind (sigc::mem_fun (*this, &EditorPanel::idle_imageSaved), ld, img, fname, sf, pparams)); else { delete ld; } @@ -1762,7 +1765,7 @@ bool EditorPanel::idle_saveImage (ProgressConnector *pc, Gl return false; } -bool EditorPanel::idle_imageSaved (ProgressConnector *pc, rtengine::IImage16* img, Glib::ustring fname, SaveFormat sf) +bool EditorPanel::idle_imageSaved (ProgressConnector *pc, rtengine::IImage16* img, Glib::ustring fname, SaveFormat sf, rtengine::procparams::ProcParams &pparams) { img->free (); @@ -1771,11 +1774,8 @@ bool EditorPanel::idle_imageSaved (ProgressConnector *pc, rtengine::IImage1 // save processing parameters, if needed if (sf.saveParams) { - rtengine::procparams::ProcParams pparams; - ipc->getParams (&pparams); // We keep the extension to avoid overwriting the profile when we have // the same output filename with different extension - //pparams.save (removeExtension (fname) + ".out" + paramFileExtension); pparams.save (fname + ".out" + paramFileExtension); } } else { diff --git a/rtgui/editorpanel.h b/rtgui/editorpanel.h index 286905bf5..f01c43cde 100644 --- a/rtgui/editorpanel.h +++ b/rtgui/editorpanel.h @@ -146,7 +146,7 @@ private: void close (); BatchQueueEntry* createBatchQueueEntry (); - bool idle_imageSaved (ProgressConnector *pc, rtengine::IImage16* img, Glib::ustring fname, SaveFormat sf); + bool idle_imageSaved (ProgressConnector *pc, rtengine::IImage16* img, Glib::ustring fname, SaveFormat sf, rtengine::procparams::ProcParams &pparams); bool idle_saveImage (ProgressConnector *pc, Glib::ustring fname, SaveFormat sf); bool idle_sendToGimp ( ProgressConnector *pc, Glib::ustring fname); bool idle_sentToGimp (ProgressConnector *pc, rtengine::IImage16* img, Glib::ustring filename);