Fix control line edit crash when undoing history

When perspective control line editing is active and the history entry is
changed such that edit mode is automatically disabled, there is a crash.
The history change triggers a processing parameters update and disables
editing. When editing is disabled, the perspective tool also tries to
update the processing parameters, causing a double mutex lock attempt.

This commit avoids updating parameters from the perspective tool and
uses the tweak operator (introduced with the spot removal tool) to achieve
the same effect.

Closes #6251.
This commit is contained in:
Lawrence Lee
2021-05-22 15:50:35 -07:00
parent 99f2a87819
commit 36f1300a6b
5 changed files with 14 additions and 16 deletions

View File

@@ -543,6 +543,11 @@ void PerspCorrection::applyControlLines(void)
adjusterChanged(camera_pitch, pitch);
}
void PerspCorrection::tweakParams(rtengine::procparams::ProcParams &pparams)
{
pparams.perspective.render = render;
}
void PerspCorrection::autoCorrectionPressed(Gtk::Button* b)
{
if (!lens_geom_listener) {
@@ -754,8 +759,9 @@ void PerspCorrection::linesEditButtonPressed(void)
lines->setActive(true);
lines->setDrawMode(true);
render = false;
if (lens_geom_listener) {
lens_geom_listener->updateTransformPreviewRequested(EvPerspRender, false);
if (listener) {
listener->setTweakOperator(this);
listener->refreshPreview(EvPerspRender);
}
lines_button_apply->set_sensitive(true);
lines_button_erase->set_sensitive(true);
@@ -768,8 +774,9 @@ void PerspCorrection::linesEditButtonPressed(void)
lines_button_apply->set_sensitive(false);
lines_button_erase->set_sensitive(false);
render = true;
if (lens_geom_listener) {
lens_geom_listener->updateTransformPreviewRequested(EvPerspRender, true);
if (listener) {
listener->unsetTweakOperator(this);
listener->refreshPreview(EvPerspRender);
}
lines->setDrawMode(false);
lines->setActive(false);