Mercurial > hg > orthanc-stone
diff Framework/Scene2DViewport/MeasureTrackers.cpp @ 1203:f3bb9a6dd949 broker
locking abstraction in IViewport
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 29 Nov 2019 21:22:21 +0100 |
parents | 0aff28f15ea2 |
children | 86a8266b8888 |
line wrap: on
line diff
--- a/Framework/Scene2DViewport/MeasureTrackers.cpp Fri Nov 29 11:03:41 2019 +0100 +++ b/Framework/Scene2DViewport/MeasureTrackers.cpp Fri Nov 29 21:22:21 2019 +0100 @@ -53,23 +53,18 @@ command_->Undo(); } - Scene2D& CreateMeasureTracker::GetScene() - { - return controllerW_.lock()->GetScene(); - } - EditMeasureTracker::EditMeasureTracker(boost::weak_ptr<ViewportController> controllerW, const PointerEvent& e) : controllerW_(controllerW) , alive_(true) , commitResult_(true) { boost::shared_ptr<ViewportController> controller = controllerW.lock(); - originalClickPosition_ = e.GetMainPosition().Apply(controller->GetScene().GetCanvasToSceneTransform()); - } - Scene2D& EditMeasureTracker::GetScene() - { - return controllerW_.lock()->GetScene(); + if (controller) + { + std::auto_ptr<IViewport::ILock> lock(controller->GetViewport().Lock()); + originalClickPosition_ = e.GetMainPosition().Apply(lock->GetScene().GetCanvasToSceneTransform()); + } } void EditMeasureTracker::Cancel()