Stop filter preview before we change filter parameters

Similar fixes as in 811b893320
This commit is contained in:
David Capello 2022-02-03 14:59:46 -03:00
parent 811b893320
commit 0cfeacab5c
7 changed files with 29 additions and 7 deletions

View File

@ -1,5 +1,5 @@
// Aseprite
// Copyright (C) 2019-2020 Igara Studio S.A.
// Copyright (C) 2019-2022 Igara Studio S.A.
// Copyright (C) 2017 David Capello
//
// This program is distributed under the terms of
@ -65,6 +65,7 @@ public:
private:
void onChange() {
stopPreview();
m_filter.setBrightness(m_brightness.getValue() / 100.0);
m_filter.setContrast(m_contrast.getValue() / 100.0);
restartPreview();

View File

@ -1,5 +1,5 @@
// Aseprite
// Copyright (C) 2019 Igara Studio S.A.
// Copyright (C) 2019-2022 Igara Studio S.A.
// Copyright (C) 2001-2018 David Capello
//
// This program is distributed under the terms of
@ -55,6 +55,8 @@ public:
protected:
void onCurveChange() {
stopPreview();
// The color curve in the filter is the same refereced by the
// editor. But anyway, we have to re-set the same curve in the
// filter to regenerate the map used internally by the filter

View File

@ -1,5 +1,5 @@
// Aseprite
// Copyright (C) 2019-2020 Igara Studio S.A.
// Copyright (C) 2019-2022 Igara Studio S.A.
// Copyright (C) 2001-2018 David Capello
//
// This program is distributed under the terms of
@ -136,6 +136,8 @@ private:
std::shared_ptr<ConvolutionMatrix> matrix = m_stock.getByName(selected->text().c_str());
Target newTarget = matrix->getDefaultTarget();
stopPreview();
m_filter.setMatrix(matrix);
setNewTarget(newTarget);

View File

@ -1,5 +1,5 @@
// Aseprite
// Copyright (C) 2019-2020 Igara Studio S.A.
// Copyright (C) 2019-2022 Igara Studio S.A.
// Copyright (C) 2017-2018 David Capello
//
// This program is distributed under the terms of
@ -95,6 +95,8 @@ private:
}
void onChangeMode() {
stopPreview();
Preferences::instance().hueSaturation.mode(mode());
m_filter.setMode(mode());
m_sliders.setColorType(isHsl() ?
@ -105,6 +107,8 @@ private:
}
void onChangeControls() {
stopPreview();
m_sliders.syncRelHsvHslSliders();
if (isHsl()) {

View File

@ -1,5 +1,5 @@
// Aseprite
// Copyright (C) 2019-2020 Igara Studio S.A.
// Copyright (C) 2019-2022 Igara Studio S.A.
//
// This program is distributed under the terms of
// the End-User License Agreement for Aseprite.
@ -137,21 +137,26 @@ private:
}
void onColorChange(const app::Color& color) {
stopPreview();
m_filter.color(color);
restartPreview();
}
void onBgColorChange(const app::Color& color) {
stopPreview();
m_filter.bgColor(color);
restartPreview();
}
void onPlaceChange(OutlineFilter::Place place) {
stopPreview();
m_filter.place(place);
restartPreview();
}
void onMatrixTypeChange() {
stopPreview();
OutlineFilter::Matrix matrix = OutlineFilter::Matrix::None;
switch (m_panel.outlineType()->selectedItem()) {
case CIRCLE: matrix = OutlineFilter::Matrix::Circle; break;
@ -165,6 +170,8 @@ private:
}
void onMatrixPixelChange(const int index) {
stopPreview();
int matrix = (int)m_filter.matrix();
matrix ^= (1 << (8-index));
m_filter.matrix((OutlineFilter::Matrix)matrix);

View File

@ -1,5 +1,5 @@
// Aseprite
// Copyright (C) 2019-2021 Igara Studio S.A.
// Copyright (C) 2019-2022 Igara Studio S.A.
// Copyright (C) 2001-2018 David Capello
//
// This program is distributed under the terms of
@ -101,16 +101,19 @@ public:
private:
void onFromChange(const app::Color& color) {
stopPreview();
m_filter.setFrom(color);
restartPreview();
}
void onToChange(const app::Color& color) {
stopPreview();
m_filter.setTo(color);
restartPreview();
}
void onToleranceChange() {
stopPreview();
m_filter.setTolerance(m_toleranceSlider->getValue());
restartPreview();
}

View File

@ -1,4 +1,5 @@
// Aseprite
// Copyright (C) 2022 Igara Studio S.A.
// Copyright (C) 2001-2017 David Capello
//
// This program is distributed under the terms of
@ -40,7 +41,7 @@ namespace app {
bool doModal();
// Starts (or restart) the preview procedure. You should call this
// method each time the user modifies parameters of the Filter.
// method after the user modifies parameters of the Filter.
void restartPreview();
protected:
@ -61,6 +62,8 @@ namespace app {
// mode overriding this method.
virtual void setupTiledMode(TiledMode tiledMode) { }
// Stops the filter preview background thread, you should call
// this before you modify the parameters of the Filter.
void stopPreview();
private: