diff options
| author | Carl Hetherington <cth@carlh.net> | 2016-08-10 16:38:33 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2016-08-12 09:13:51 +0100 |
| commit | b1dc9c3a2f7e55c9afc5bf2d5b465371b048e14f (patch) | |
| tree | 9968238c6c0511f044e6fcdb4abcc08b5eb28f27 /src/wx/colour_conversion_editor.cc | |
| parent | 4a0ae92e28d7d1f0dd648d1b620efc324fdef161 (diff) | |
Remove all use of stringstream in an attempt to fix
the suspected thread-unsafe crash bugs on OS X.
Diffstat (limited to 'src/wx/colour_conversion_editor.cc')
| -rw-r--r-- | src/wx/colour_conversion_editor.cc | 85 |
1 files changed, 30 insertions, 55 deletions
diff --git a/src/wx/colour_conversion_editor.cc b/src/wx/colour_conversion_editor.cc index 79365bf88..3d4363cb9 100644 --- a/src/wx/colour_conversion_editor.cc +++ b/src/wx/colour_conversion_editor.cc @@ -22,7 +22,6 @@ #include "lib/raw_convert.h" #include "wx_util.h" #include "colour_conversion_editor.h" -#include <locked_sstream.h> #include <dcp/gamma_transfer_function.h> #include <dcp/modified_gamma_transfer_function.h> #include <wx/spinctrl.h> @@ -247,51 +246,32 @@ ColourConversionEditor::set (ColourConversion conversion) _ignore_chromaticity_changed = true; - locked_stringstream s; - s.setf (std::ios::fixed, std::ios::floatfield); - s.precision (6); - - s << conversion.red().x; - _red_x->SetValue (std_to_wx (s.str ())); - - s.str (""); - s << conversion.red().y; - _red_y->SetValue (std_to_wx (s.str ())); - - s.str (""); - s << conversion.green().x; - _green_x->SetValue (std_to_wx (s.str ())); - - s.str (""); - s << conversion.green().y; - _green_y->SetValue (std_to_wx (s.str ())); - - s.str (""); - s << conversion.blue().x; - _blue_x->SetValue (std_to_wx (s.str ())); - - s.str (""); - s << conversion.blue().y; - _blue_y->SetValue (std_to_wx (s.str ())); - - s.str (""); - s << conversion.white().x; - _white_x->SetValue (std_to_wx (s.str ())); - - s.str (""); - s << conversion.white().y; - _white_y->SetValue (std_to_wx (s.str ())); + char buffer[256]; + snprintf (buffer, sizeof (buffer), "%.6f", conversion.red().x); + _red_x->SetValue (std_to_wx (buffer)); + snprintf (buffer, sizeof (buffer), "%.6f", conversion.red().y); + _red_y->SetValue (std_to_wx (buffer)); + snprintf (buffer, sizeof (buffer), "%.6f", conversion.green().x); + _green_x->SetValue (std_to_wx (buffer)); + snprintf (buffer, sizeof (buffer), "%.6f", conversion.green().y); + _green_y->SetValue (std_to_wx (buffer)); + snprintf (buffer, sizeof (buffer), "%.6f", conversion.blue().x); + _blue_x->SetValue (std_to_wx (buffer)); + snprintf (buffer, sizeof (buffer), "%.6f", conversion.blue().y); + _blue_y->SetValue (std_to_wx (buffer)); + snprintf (buffer, sizeof (buffer), "%.6f", conversion.white().x); + _white_x->SetValue (std_to_wx (buffer)); + snprintf (buffer, sizeof (buffer), "%.6f", conversion.white().y); + _white_y->SetValue (std_to_wx (buffer)); _ignore_chromaticity_changed = false; if (conversion.adjusted_white ()) { _adjust_white->SetValue (true); - s.str (""); - s << conversion.adjusted_white().get().x; - _adjusted_white_x->SetValue (std_to_wx (s.str ())); - s.str (""); - s << conversion.adjusted_white().get().y; - _adjusted_white_y->SetValue (std_to_wx (s.str ())); + snprintf (buffer, sizeof (buffer), "%.6f", conversion.adjusted_white().get().x); + _adjusted_white_x->SetValue (std_to_wx (buffer)); + snprintf (buffer, sizeof (buffer), "%.6f", conversion.adjusted_white().get().y); + _adjusted_white_y->SetValue (std_to_wx (buffer)); } else { _adjust_white->SetValue (false); } @@ -394,11 +374,9 @@ ColourConversionEditor::update_bradford () boost::numeric::ublas::matrix<double> m = get().bradford (); for (int i = 0; i < 3; ++i) { for (int j = 0; j < 3; ++j) { - locked_stringstream s; - s.setf (std::ios::fixed, std::ios::floatfield); - s.precision (7); - s << m (i, j); - _bradford[i][j]->SetLabel (std_to_wx (s.str ())); + char buffer[256]; + snprintf (buffer, sizeof (buffer), "%.7f", m (i, j)); + _bradford[i][j]->SetLabel (std_to_wx (buffer)); } } } @@ -409,11 +387,9 @@ ColourConversionEditor::update_rgb_to_xyz () boost::numeric::ublas::matrix<double> m = get().rgb_to_xyz (); for (int i = 0; i < 3; ++i) { for (int j = 0; j < 3; ++j) { - locked_stringstream s; - s.setf (std::ios::fixed, std::ios::floatfield); - s.precision (7); - s << m (i, j); - _rgb_to_xyz[i][j]->SetLabel (std_to_wx (s.str ())); + char buffer[256]; + snprintf (buffer, sizeof (buffer), "%.7f", m (i, j)); + _rgb_to_xyz[i][j]->SetLabel (std_to_wx (buffer)); } } } @@ -442,8 +418,7 @@ ColourConversionEditor::set_spin_ctrl (wxSpinCtrlDouble* control, double value) void ColourConversionEditor::set_text_ctrl (wxTextCtrl* control, double value) { - locked_stringstream s; - s.precision (7); - s << value; - control->SetValue (std_to_wx (s.str ())); + char buffer[256]; + snprintf (buffer, sizeof (buffer), "%.7f", value); + control->SetValue (std_to_wx (buffer)); } |
