diff options
author | Alexander Sulfrian <alexander@sulfrian.net> | 2012-09-05 18:30:34 +0200 |
---|---|---|
committer | Alexander Sulfrian <alexander@sulfrian.net> | 2013-01-13 22:40:53 +0100 |
commit | 9c34d27a8bc724722e9cae203e0c455573c3d5f1 (patch) | |
tree | 47066bed3a0dabf41fc7e7e103b71473e86db70c /src/menu/text.cpp | |
parent | 6887913d9abf9240d1b138936868c2a5dc91cac9 (diff) | |
download | usdx-9c34d27a8bc724722e9cae203e0c455573c3d5f1.tar.gz usdx-9c34d27a8bc724722e9cae203e0c455573c3d5f1.tar.xz usdx-9c34d27a8bc724722e9cae203e0c455573c3d5f1.zip |
menu: use boost::shared_mutex
Use everywhere a mutable boost::shared_mutex to enable locking during
const getter and the multiple reader and single writer pattern.
Diffstat (limited to 'src/menu/text.cpp')
-rw-r--r-- | src/menu/text.cpp | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/src/menu/text.cpp b/src/menu/text.cpp index 88af9076..9cfc8218 100644 --- a/src/menu/text.cpp +++ b/src/menu/text.cpp @@ -69,6 +69,7 @@ namespace usdx void Text::realign(void) { + boost::shared_lock<boost::shared_mutex> lock(font_mutex); Rectangle<int> bbox = makeRect(font->BBox(text.c_str())); bbox.get_point1().set_y(font->Ascender()); bbox.get_point2().set_y(font->Descender()); @@ -79,7 +80,7 @@ namespace usdx { DrawableControl::draw(); - boost::mutex::scoped_lock lock(font_mutex); + boost::shared_lock<boost::shared_mutex> lock(font_mutex); glTranslatef(offset.get_x(), offset.get_y(), 0.0f); // invert y axis, text is drawn using window orientation (origin is @@ -90,25 +91,33 @@ namespace usdx void Text::set_font_size(unsigned int value) { - boost::mutex::scoped_lock lock(font_mutex); - font->FaceSize(value); + { + boost::unique_lock<boost::shared_mutex> lock(font_mutex); + font->FaceSize(value); + } + realign(); } unsigned int Text::get_font_size(void) const { + boost::shared_lock<boost::shared_mutex> lock(font_mutex); return font->FaceSize(); } void Text::set_text(const std::string value) { - boost::mutex::scoped_lock lock(font_mutex); - text = value; + { + boost::unique_lock<boost::shared_mutex> lock(font_mutex); + text = value; + } + realign(); } std::string Text::get_text(void) const { + boost::shared_lock<boost::shared_mutex> lock(font_mutex); return text; } |