Fix crash reported in #2239 + suppress warning from header files

Crash reported here
https://github.com/Beep6581/RawTherapee/issues/2239#issuecomment-521585237
This commit is contained in:
Hombre
2019-08-15 19:01:30 +02:00
parent b4d77986a6
commit a46b85f226
4 changed files with 33 additions and 31 deletions

View File

@@ -188,8 +188,6 @@ protected:
void updateLRGBHistograms (); void updateLRGBHistograms ();
void setScale (int prevscale); void setScale (int prevscale);
void updatePreviewImage (int todo, bool panningRelatedChange); void updatePreviewImage (int todo, bool panningRelatedChange);
void setTweakOperator (TweakOperator *tOperator);
void unsetTweakOperator (TweakOperator *tOperator);
MyMutex mProcessing; MyMutex mProcessing;
const std::unique_ptr<ProcParams> params; // used for the rendering, can be eventually tweaked const std::unique_ptr<ProcParams> params; // used for the rendering, can be eventually tweaked
@@ -275,6 +273,8 @@ public:
DetailedCrop* createCrop (::EditDataProvider *editDataProvider, bool isDetailWindow) override; DetailedCrop* createCrop (::EditDataProvider *editDataProvider, bool isDetailWindow) override;
void setTweakOperator (TweakOperator *tOperator) override;
void unsetTweakOperator (TweakOperator *tOperator) override;
bool getAutoWB (double& temp, double& green, double equal, double tempBias) override; bool getAutoWB (double& temp, double& green, double equal, double tempBias) override;
void getCamWB (double& temp, double& green) override; void getCamWB (double& temp, double& green) override;
void getSpotWB (int x, int y, int rectSize, double& temp, double& green) override; void getSpotWB (int x, int y, int rectSize, double& temp, double& green) override;

View File

@@ -42,8 +42,8 @@ namespace procparams
{ {
class ProcParams; class ProcParams;
class SpotEntry;
struct SpotEntry;
struct DirPyrDenoiseParams; struct DirPyrDenoiseParams;
struct SharpeningParams; struct SharpeningParams;
struct VignettingParams; struct VignettingParams;

View File

@@ -117,6 +117,8 @@ void Spot::read (const ProcParams* pp, const ParamsEdited* pedited)
setEnabled (pp->spot.enabled); setEnabled (pp->spot.enabled);
lastEnabled = pp->spot.enabled; lastEnabled = pp->spot.enabled;
activeSpot = -1;
lastObject = -1;
if (spots.size() != oldSize) { if (spots.size() != oldSize) {
createGeometry(); createGeometry();
@@ -430,12 +432,12 @@ void Spot::deleteSelectedEntry()
} }
// TODO // TODO
CursorShape Spot::getCursor (const int objectID) CursorShape Spot::getCursor (int objectID)
{ {
return CSHandOpen; return CSHandOpen;
} }
bool Spot::mouseOver (const int modifierKey) bool Spot::mouseOver (int modifierKey)
{ {
EditDataProvider* editProvider = getEditProvider(); EditDataProvider* editProvider = getEditProvider();
@@ -485,7 +487,7 @@ bool Spot::mouseOver (const int modifierKey)
} }
// Create a new Target and Source point or start the drag of a Target point under the cursor // Create a new Target and Source point or start the drag of a Target point under the cursor
bool Spot::button1Pressed (const int modifierKey) bool Spot::button1Pressed (int modifierKey)
{ {
EditDataProvider* editProvider = getEditProvider(); EditDataProvider* editProvider = getEditProvider();
@@ -521,7 +523,7 @@ bool Spot::button1Released()
} }
// Delete a point // Delete a point
bool Spot::button2Pressed (const int modifierKey) bool Spot::button2Pressed (int modifierKey)
{ {
EditDataProvider* editProvider = getEditProvider(); EditDataProvider* editProvider = getEditProvider();
@@ -537,7 +539,7 @@ bool Spot::button2Pressed (const int modifierKey)
} }
// Create a new Target and Source point or start the drag of a Target point under the cursor // Create a new Target and Source point or start the drag of a Target point under the cursor
bool Spot::button3Pressed (const int modifierKey) bool Spot::button3Pressed (int modifierKey)
{ {
EditDataProvider* editProvider = getEditProvider(); EditDataProvider* editProvider = getEditProvider();
@@ -575,7 +577,7 @@ bool Spot::button3Released()
return false; return false;
} }
bool Spot::drag1 (const int modifierKey) bool Spot::drag1 (int modifierKey)
{ {
EditDataProvider *editProvider = getEditProvider(); EditDataProvider *editProvider = getEditProvider();
int imW, imH; int imW, imH;
@@ -656,7 +658,7 @@ bool Spot::drag1 (const int modifierKey)
return modified; return modified;
} }
bool Spot::drag3 (const int modifierKey) bool Spot::drag3 (int modifierKey)
{ {
EditDataProvider *editProvider = getEditProvider(); EditDataProvider *editProvider = getEditProvider();
int imW, imH; int imW, imH;
@@ -683,12 +685,12 @@ bool Spot::drag3 (const int modifierKey)
return modified; return modified;
} }
bool Spot::pick2 (const bool picked) bool Spot::pick2 (bool picked)
{ {
return pick3 (picked); return pick3 (picked);
} }
bool Spot::pick3 (const bool picked) bool Spot::pick3 (bool picked)
{ {
EditDataProvider* editProvider = getEditProvider(); EditDataProvider* editProvider = getEditProvider();

View File

@@ -53,7 +53,7 @@
* (the point will be deleted on button release). * (the point will be deleted on button release).
*/ */
class Spot : public ToolParamBlock, public FoldableToolPanel, public EditSubscriber, public rtengine::TweakOperator class Spot : public ToolParamBlock, public FoldableToolPanel, public rtengine::TweakOperator, public EditSubscriber
{ {
private: private:
@@ -93,31 +93,31 @@ public:
Spot (); Spot ();
~Spot (); ~Spot ();
void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr); void read (const rtengine::procparams::ProcParams* pp, const ParamsEdited* pedited = nullptr) override;
void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr); void write (rtengine::procparams::ProcParams* pp, ParamsEdited* pedited = nullptr) override;
void enabledChanged (); void enabledChanged () override;
void setEditProvider (EditDataProvider* provider); void setEditProvider (EditDataProvider* provider) override;
void setBatchMode (bool batchMode); void setBatchMode (bool batchMode) override;
// EditSubscriber interface // EditSubscriber interface
CursorShape getCursor (const int objectID); CursorShape getCursor (int objectID);
bool mouseOver (const int modifierKey); bool mouseOver (int modifierKey) override;
bool button1Pressed (const int modifierKey); bool button1Pressed (int modifierKey) override;
bool button1Released (); bool button1Released () override;
bool button2Pressed (const int modifierKey); bool button2Pressed (int modifierKey) override;
bool button3Pressed (const int modifierKey); bool button3Pressed (int modifierKey) override;
bool button3Released (); bool button3Released () override;
bool drag1 (const int modifierKey); bool drag1 (int modifierKey) override;
bool drag3 (const int modifierKey); bool drag3 (int modifierKey) override;
bool pick2 (const bool picked); bool pick2 (bool picked) override;
bool pick3 (const bool picked); bool pick3 (bool picked) override;
void switchOffEditMode (); void switchOffEditMode () override;
//TweakOperator interface //TweakOperator interface
void tweakParams(rtengine::procparams::ProcParams& pparams) override; void tweakParams(rtengine::procparams::ProcParams& pparams);
rtengine::ProcEvent EvSpotEnabled; rtengine::ProcEvent EvSpotEnabled;
rtengine::ProcEvent EvSpotEnabledOPA; // used to toggle-on the Spot 'On Preview Adjustment' mode rtengine::ProcEvent EvSpotEnabledOPA; // used to toggle-on the Spot 'On Preview Adjustment' mode