Bug fix: the monitor profile and softproofing profile are now computed

automatically even without special trigger event. The order of the
Monitor Intent is now correct.
This commit is contained in:
Hombre
2016-08-29 21:04:59 +02:00
parent a1981dbd4d
commit 7c7cb9f9f1
5 changed files with 17 additions and 7 deletions

View File

@@ -88,7 +88,7 @@ ImProcCoordinator::ImProcCoordinator ()
fullw(1), fullh(1),
pW(-1), pH(-1),
plistener(NULL), imageListener(NULL), aeListener(NULL), acListener(NULL), abwListener(NULL), actListener(NULL), adnListener(NULL), awavListener(NULL), dehaListener(NULL), hListener(NULL),
resultValid(false), changeSinceLast(0), updaterRunning(false), destroying(false), utili(false), autili(false), wavcontlutili(false),
resultValid(false), lastOutputProfile("BADFOOD"), lastOutputIntent(RI__COUNT), lastOutputBPC(false), changeSinceLast(0), updaterRunning(false), destroying(false), utili(false), autili(false), wavcontlutili(false),
butili(false), ccutili(false), cclutili(false), clcutili(false), opautili(false), conversionBuffer(1, 1)
{}
@@ -778,7 +778,10 @@ void ImProcCoordinator::updatePreviewImage (int todo, Crop* cropCall)
}
// Update the monitor color transform if necessary
if (todo & M_MONITOR) {
if ((todo & M_MONITOR) || (lastOutputProfile!=params.icm.output) || lastOutputIntent!=params.icm.outputIntent || lastOutputBPC!=params.icm.outputBPC) {
lastOutputProfile = params.icm.output;
lastOutputIntent = params.icm.outputIntent;
lastOutputBPC = params.icm.outputBPC;
ipf.updateColorProfiles(params.icm, monitorProfile, monitorIntent, softProof, gamutCheck);
}

View File

@@ -180,6 +180,13 @@ protected:
MyMutex mProcessing;
ProcParams params;
// for optimization purpose, the output profile, output rendering intent and
// output BPC will trigger a regeneration of the profile on parameter change only
// and automatically
Glib::ustring lastOutputProfile;
RenderingIntent lastOutputIntent;
bool lastOutputBPC;
// members of the updater:
Glib::Thread* thread;
MyMutex updaterThreadStart;