Commit f6a4b4c5 authored by twanvl's avatar twanvl

The thread safety stuff is only needed for GTK

parent ca1d3a64
...@@ -45,7 +45,7 @@ class GeneratedImage : public ScriptValue { ...@@ -45,7 +45,7 @@ class GeneratedImage : public ScriptValue {
/// Equality should mean that every pixel in the generated images is the same if the same options are used /// Equality should mean that every pixel in the generated images is the same if the same options are used
virtual bool operator == (const GeneratedImage& that) const = 0; virtual bool operator == (const GeneratedImage& that) const = 0;
inline bool operator != (const GeneratedImage& that) const { return !(*this == that); } inline bool operator != (const GeneratedImage& that) const { return !(*this == that); }
/// Can this image be generated safely from another thread? /// Can this image be generated safely from another thread?
virtual bool threadSafe() const = 0; virtual bool threadSafe() const = 0;
...@@ -64,8 +64,8 @@ class LinearBlendImage : public GeneratedImage { ...@@ -64,8 +64,8 @@ class LinearBlendImage : public GeneratedImage {
virtual Image generate(const Options& opt) const; virtual Image generate(const Options& opt) const;
virtual ImageCombine combine() const; virtual ImageCombine combine() const;
virtual bool operator == (const GeneratedImage& that) const; virtual bool operator == (const GeneratedImage& that) const;
virtual bool threadSafe() const {return true;} virtual bool threadSafe() const { return true; }
private: private:
GeneratedImageP image1, image2; GeneratedImageP image1, image2;
double x1, y1, x2, y2; double x1, y1, x2, y2;
...@@ -82,8 +82,8 @@ class MaskedBlendImage : public GeneratedImage { ...@@ -82,8 +82,8 @@ class MaskedBlendImage : public GeneratedImage {
virtual Image generate(const Options& opt) const; virtual Image generate(const Options& opt) const;
virtual ImageCombine combine() const; virtual ImageCombine combine() const;
virtual bool operator == (const GeneratedImage& that) const; virtual bool operator == (const GeneratedImage& that) const;
virtual bool threadSafe() const {return true;} virtual bool threadSafe() const { return true; }
private: private:
GeneratedImageP light, dark, mask; GeneratedImageP light, dark, mask;
}; };
...@@ -99,8 +99,8 @@ class CombineBlendImage : public GeneratedImage { ...@@ -99,8 +99,8 @@ class CombineBlendImage : public GeneratedImage {
virtual Image generate(const Options& opt) const; virtual Image generate(const Options& opt) const;
virtual ImageCombine combine() const; virtual ImageCombine combine() const;
virtual bool operator == (const GeneratedImage& that) const; virtual bool operator == (const GeneratedImage& that) const;
virtual bool threadSafe() const {return true;} virtual bool threadSafe() const { return true; }
private: private:
GeneratedImageP image1, image2; GeneratedImageP image1, image2;
ImageCombine image_combine; ImageCombine image_combine;
...@@ -117,8 +117,8 @@ class SetMaskImage : public GeneratedImage { ...@@ -117,8 +117,8 @@ class SetMaskImage : public GeneratedImage {
virtual Image generate(const Options& opt) const; virtual Image generate(const Options& opt) const;
virtual ImageCombine combine() const; virtual ImageCombine combine() const;
virtual bool operator == (const GeneratedImage& that) const; virtual bool operator == (const GeneratedImage& that) const;
virtual bool threadSafe() const {return true;} virtual bool threadSafe() const { return true; }
private: private:
GeneratedImageP image, mask; GeneratedImageP image, mask;
}; };
...@@ -151,8 +151,8 @@ class PackagedImage : public GeneratedImage { ...@@ -151,8 +151,8 @@ class PackagedImage : public GeneratedImage {
{} {}
virtual Image generate(const Options& opt) const; virtual Image generate(const Options& opt) const;
virtual bool operator == (const GeneratedImage& that) const; virtual bool operator == (const GeneratedImage& that) const;
virtual bool threadSafe() const {return true;} virtual bool threadSafe() const { return true; }
private: private:
String filename; String filename;
}; };
...@@ -167,8 +167,8 @@ class BuiltInImage : public GeneratedImage { ...@@ -167,8 +167,8 @@ class BuiltInImage : public GeneratedImage {
{} {}
virtual Image generate(const Options& opt) const; virtual Image generate(const Options& opt) const;
virtual bool operator == (const GeneratedImage& that) const; virtual bool operator == (const GeneratedImage& that) const;
virtual bool threadSafe() const {return true;} virtual bool threadSafe() const { return true; }
private: private:
String name; String name;
}; };
...@@ -182,8 +182,12 @@ class SymbolToImage : public GeneratedImage { ...@@ -182,8 +182,12 @@ class SymbolToImage : public GeneratedImage {
~SymbolToImage(); ~SymbolToImage();
virtual Image generate(const Options& opt) const; virtual Image generate(const Options& opt) const;
virtual bool operator == (const GeneratedImage& that) const; virtual bool operator == (const GeneratedImage& that) const;
virtual bool threadSafe() const {return false;} #ifdef __WXGTK__
virtual bool threadSafe() const { return false; }
#else
virtual bool threadSafe() const { return true; }
#endif
private: private:
SymbolToImage(const SymbolToImage&); // copy ctor SymbolToImage(const SymbolToImage&); // copy ctor
String filename; String filename;
......
...@@ -92,13 +92,13 @@ void NewSetWindow::OnOK(wxCommandEvent&) { ...@@ -92,13 +92,13 @@ void NewSetWindow::OnOK(wxCommandEvent&) {
void NewSetWindow::done() { void NewSetWindow::done() {
try { try {
StyleSheetP stylesheet = stylesheet_list->getSelection<StyleSheet>(); StyleSheetP stylesheet = stylesheet_list->getSelection<StyleSheet>();
set = new_intrusive1<Set>(stylesheet); set = new_intrusive1<Set>(stylesheet);
set->validate(); set->validate();
EndModal(wxID_OK); EndModal(wxID_OK);
} catch (Error& e) { } catch (const Error& e) {
handle_error(e); handle_error(e);
throw; // We want to crash. EndModal(wxID_CANCEL);
} }
} }
......
...@@ -173,8 +173,6 @@ SetWindow::~SetWindow() { ...@@ -173,8 +173,6 @@ SetWindow::~SetWindow() {
delete find_dialog; delete find_dialog;
// remove from list of set windows // remove from list of set windows
set_windows.erase(remove(set_windows.begin(), set_windows.end(), this)); set_windows.erase(remove(set_windows.begin(), set_windows.end(), this));
// stop updating
onBeforeChangeSet();
} }
// ----------------------------------------------------------------------------- : Panel managment // ----------------------------------------------------------------------------- : Panel managment
......
...@@ -47,7 +47,7 @@ class ScriptableImage { ...@@ -47,7 +47,7 @@ class ScriptableImage {
} }
/// Can this be safely generated from another thread? /// Can this be safely generated from another thread?
bool threadSafe() const {return value != nullptr ? value->threadSafe() : false; } inline bool threadSafe() const { return !value || value->threadSafe(); }
private: private:
OptionalScript script; ///< The script, not really optional OptionalScript script; ///< The script, not really optional
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment