comparison 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
comparison
equal deleted inserted replaced
1200:54cbffabdc45 1203:f3bb9a6dd949
51 controllerW_.lock()->PushCommand(command_); 51 controllerW_.lock()->PushCommand(command_);
52 else 52 else
53 command_->Undo(); 53 command_->Undo();
54 } 54 }
55 55
56 Scene2D& CreateMeasureTracker::GetScene()
57 {
58 return controllerW_.lock()->GetScene();
59 }
60
61 EditMeasureTracker::EditMeasureTracker(boost::weak_ptr<ViewportController> controllerW, const PointerEvent& e) 56 EditMeasureTracker::EditMeasureTracker(boost::weak_ptr<ViewportController> controllerW, const PointerEvent& e)
62 : controllerW_(controllerW) 57 : controllerW_(controllerW)
63 , alive_(true) 58 , alive_(true)
64 , commitResult_(true) 59 , commitResult_(true)
65 { 60 {
66 boost::shared_ptr<ViewportController> controller = controllerW.lock(); 61 boost::shared_ptr<ViewportController> controller = controllerW.lock();
67 originalClickPosition_ = e.GetMainPosition().Apply(controller->GetScene().GetCanvasToSceneTransform());
68 }
69 62
70 Scene2D& EditMeasureTracker::GetScene() 63 if (controller)
71 { 64 {
72 return controllerW_.lock()->GetScene(); 65 std::auto_ptr<IViewport::ILock> lock(controller->GetViewport().Lock());
66 originalClickPosition_ = e.GetMainPosition().Apply(lock->GetScene().GetCanvasToSceneTransform());
67 }
73 } 68 }
74 69
75 void EditMeasureTracker::Cancel() 70 void EditMeasureTracker::Cancel()
76 { 71 {
77 commitResult_ = false; 72 commitResult_ = false;