Merge pull request #4839 from Beep6581/issue4834_branch

reduce updates to preview, panning background, navigator and thumbs, …
This commit is contained in:
Ingo Weyrich
2018-10-06 22:18:54 +02:00
committed by GitHub
5 changed files with 814 additions and 763 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -179,7 +179,7 @@ protected:
void reallocAll ();
void updateLRGBHistograms ();
void setScale (int prevscale);
void updatePreviewImage (int todo, Crop* cropCall = nullptr);
void updatePreviewImage (int todo, bool panningRelatedChange);
MyMutex mProcessing;
ProcParams params;

View File

@@ -1646,7 +1646,9 @@ bool LensProfParams::operator ==(const LensProfParams& other) const
&& useCA == other.useCA
&& lfCameraMake == other.lfCameraMake
&& lfCameraModel == other.lfCameraModel
&& lfLens == other.lfLens;
&& lfLens == other.lfLens
&& useDist == other.useDist
&& useVign == other.useVign;
}
bool LensProfParams::operator !=(const LensProfParams& other) const

View File

@@ -37,7 +37,7 @@ using namespace rtengine::procparams;
Thumbnail::Thumbnail (CacheManager* cm, const Glib::ustring& fname, CacheImageData* cf)
: fname(fname), cfs(*cf), cachemgr(cm), ref(1), enqueueNumber(0), tpp(nullptr),
pparamsValid(false), needsReProcessing(true), imageLoading(false), lastImg(nullptr),
pparamsValid(false), imageLoading(false), lastImg(nullptr),
lastW(0), lastH(0), lastScale(0), initial_(false)
{
@@ -65,7 +65,7 @@ Thumbnail::Thumbnail (CacheManager* cm, const Glib::ustring& fname, CacheImageDa
Thumbnail::Thumbnail (CacheManager* cm, const Glib::ustring& fname, const std::string& md5)
: fname(fname), cachemgr(cm), ref(1), enqueueNumber(0), tpp(nullptr), pparamsValid(false),
needsReProcessing(true), imageLoading(false), lastImg(nullptr),
imageLoading(false), lastImg(nullptr),
lastW(0), lastH(0), lastScale(0.0), initial_(true)
{
@@ -155,7 +155,6 @@ void Thumbnail::_generateThumbnailImage ()
tpp->getAutoWBMultipliers(cfs.redAWBMul, cfs.greenAWBMul, cfs.blueAWBMul);
_saveThumbnail ();
cfs.supported = true;
needsReProcessing = true;
cfs.save (getCacheFileName ("data", ".txt"));
@@ -368,7 +367,6 @@ void Thumbnail::clearProcParams (int whoClearedIt)
cfs.recentlySaved = false;
pparamsValid = false;
needsReProcessing = true;
//TODO: run though customprofilebuilder?
// probably not as this is the only option to set param values to default
@@ -413,7 +411,7 @@ void Thumbnail::clearProcParams (int whoClearedIt)
}
}
bool Thumbnail::hasProcParams ()
bool Thumbnail::hasProcParams () const
{
return pparamsValid;
@@ -421,26 +419,50 @@ bool Thumbnail::hasProcParams ()
void Thumbnail::setProcParams (const ProcParams& pp, ParamsEdited* pe, int whoChangedIt, bool updateCacheNow)
{
const bool needsReprocessing =
pparams.toneCurve != pp.toneCurve
|| pparams.labCurve != pp.labCurve
|| pparams.localContrast != pp.localContrast
|| pparams.rgbCurves != pp.rgbCurves
|| pparams.colorToning != pp.colorToning
|| pparams.vibrance != pp.vibrance
|| pparams.wb != pp.wb
|| pparams.colorappearance != pp.colorappearance
|| pparams.epd != pp.epd
|| pparams.fattal != pp.fattal
|| pparams.sh != pp.sh
|| pparams.crop != pp.crop
|| pparams.coarse != pp.coarse
|| pparams.commonTrans != pp.commonTrans
|| pparams.rotate != pp.rotate
|| pparams.distortion != pp.distortion
|| pparams.lensProf != pp.lensProf
|| pparams.perspective != pp.perspective
|| pparams.gradient != pp.gradient
|| pparams.pcvignette != pp.pcvignette
|| pparams.cacorrection != pp.cacorrection
|| pparams.vignetting != pp.vignetting
|| pparams.chmixer != pp.chmixer
|| pparams.blackwhite != pp.blackwhite
|| pparams.icm != pp.icm
|| pparams.hsvequalizer != pp.hsvequalizer
|| pparams.filmSimulation != pp.filmSimulation
|| pparams.softlight != pp.softlight;
{
MyMutex::MyLock lock(mutex);
if (pparams.sharpening.threshold.isDouble() != pp.sharpening.threshold.isDouble()) {
printf("WARNING: Sharpening different!\n");
}
if (pparams.vibrance.psthreshold.isDouble() != pp.vibrance.psthreshold.isDouble()) {
printf("WARNING: Vibrance different!\n");
}
if (pparams != pp) {
cfs.recentlySaved = false;
} else if (pparamsValid && !updateCacheNow) {
// nothing to do
return;
}
// do not update rank, colorlabel and inTrash
int rank = getRank();
int colorlabel = getColorLabel();
int inTrash = getStage();
const int rank = getRank();
const int colorlabel = getColorLabel();
const int inTrash = getStage();
if (pe) {
pe->combine(pparams, pp, true);
@@ -449,24 +471,24 @@ void Thumbnail::setProcParams (const ProcParams& pp, ParamsEdited* pe, int whoCh
}
pparamsValid = true;
needsReProcessing = true;
setRank(rank);
setColorLabel(colorlabel);
setStage(inTrash);
if (updateCacheNow) {
updateCache ();
updateCache();
}
} // end of mutex lock
for (size_t i = 0; i < listeners.size(); i++) {
listeners[i]->procParamsChanged (this, whoChangedIt);
if (needsReprocessing) {
for (size_t i = 0; i < listeners.size(); i++) {
listeners[i]->procParamsChanged (this, whoChangedIt);
}
}
}
bool Thumbnail::isRecentlySaved ()
bool Thumbnail::isRecentlySaved () const
{
return cfs.recentlySaved;
@@ -495,17 +517,17 @@ void Thumbnail::imageRemovedFromQueue ()
enqueueNumber--;
}
bool Thumbnail::isEnqueued ()
bool Thumbnail::isEnqueued () const
{
return enqueueNumber > 0;
}
bool Thumbnail::isPixelShift ()
bool Thumbnail::isPixelShift () const
{
return cfs.isPixelShift;
}
bool Thumbnail::isHDR ()
bool Thumbnail::isHDR () const
{
return cfs.isHDR;
}
@@ -694,13 +716,13 @@ void Thumbnail::generateExifDateTimeStrings ()
dateTimeString = ostr.str ();
}
const Glib::ustring& Thumbnail::getExifString ()
const Glib::ustring& Thumbnail::getExifString () const
{
return exifString;
}
const Glib::ustring& Thumbnail::getDateTimeString ()
const Glib::ustring& Thumbnail::getDateTimeString () const
{
return dateTimeString;
@@ -798,7 +820,6 @@ int Thumbnail::infoFromImage (const Glib::ustring& fname, std::unique_ptr<rtengi
void Thumbnail::_loadThumbnail(bool firstTrial)
{
needsReProcessing = true;
tw = -1;
th = options.maxThumbnailHeight;
delete tpp;

View File

@@ -49,7 +49,6 @@ class Thumbnail
rtengine::procparams::ProcParams pparams;
bool pparamsValid;
bool needsReProcessing;
bool imageLoading;
// these are the data of the result image of the last getthumbnailimage call (for caching purposes)
@@ -81,7 +80,7 @@ public:
Thumbnail (CacheManager* cm, const Glib::ustring& fname, const std::string& md5);
~Thumbnail ();
bool hasProcParams ();
bool hasProcParams () const;
const rtengine::procparams::ProcParams& getProcParams ();
const rtengine::procparams::ProcParams& getProcParamsU (); // Unprotected version
@@ -94,21 +93,21 @@ public:
void notifylisterners_procParamsChanged(int whoChangedIt);
bool isQuick()
bool isQuick() const
{
return cfs.thumbImgType == CacheImageData::QUICK_THUMBNAIL;
}
bool isPParamsValid()
bool isPParamsValid() const
{
return pparamsValid;
}
bool isRecentlySaved ();
bool isRecentlySaved () const;
void imageDeveloped ();
void imageEnqueued ();
void imageRemovedFromQueue ();
bool isEnqueued ();
bool isPixelShift ();
bool isHDR ();
bool isEnqueued () const;
bool isPixelShift () const;
bool isHDR () const;
// unsigned char* getThumbnailImage (int &w, int &h, int fixwh=1); // fixwh = 0: fix w and calculate h, =1: fix h and calculate w
rtengine::IImage8* processThumbImage (const rtengine::procparams::ProcParams& pparams, int h, double& scale);
@@ -116,9 +115,9 @@ public:
void getThumbnailSize (int &w, int &h, const rtengine::procparams::ProcParams *pparams = nullptr);
void getFinalSize (const rtengine::procparams::ProcParams& pparams, int& w, int& h);
const Glib::ustring& getExifString ();
const Glib::ustring& getDateTimeString ();
void getCamWB (double& temp, double& green)
const Glib::ustring& getExifString () const;
const Glib::ustring& getDateTimeString () const;
void getCamWB (double& temp, double& green) const
{
if (tpp) {
tpp->getCamWB (temp, green);
@@ -143,7 +142,7 @@ public:
}
ThFileType getType ();
Glib::ustring getFileName ()
Glib::ustring getFileName () const
{
return fname;
}
@@ -155,12 +154,12 @@ public:
{
return &cfs;
}
std::string getMD5 ()
std::string getMD5 () const
{
return cfs.md5;
}
int getRank ()
int getRank () const
{
return pparams.rank;
}
@@ -172,7 +171,7 @@ public:
}
}
int getColorLabel ()
int getColorLabel () const
{
return pparams.colorlabel;
}
@@ -184,7 +183,7 @@ public:
}
}
int getStage ()
int getStage () const
{
return pparams.inTrash;
}