comparison Framework/Scene2D/ZoomSceneTracker.cpp @ 958:769249e1f3b4

added guards to prevent calling methods on a dead controller (see comment in diff for expl.) + build fix
author Benjamin Golinvaux <bgo@osimis.io>
date Fri, 23 Aug 2019 10:16:32 +0200
parents e42b491f1fb2
children 2d8ab34c8c91
comparison
equal deleted inserted replaced
957:966c96b694f6 958:769249e1f3b4
74 z = MIN_ZOOM + (MAX_ZOOM - MIN_ZOOM) * (dy + 1.0) / 2.0; 74 z = MIN_ZOOM + (MAX_ZOOM - MIN_ZOOM) * (dy + 1.0) / 2.0;
75 } 75 }
76 76
77 double zoom = pow(2.0, z); 77 double zoom = pow(2.0, z);
78 78
79 GetController()->SetSceneToCanvasTransform( 79 // The controller is a weak pointer. It could be deleted when the
80 AffineTransform2D::Combine( 80 // tracker is still alive (for instance, because of a lost WebGL
81 AffineTransform2D::CreateScaling(zoom, zoom), 81 // context)
82 originalSceneToCanvas_)); 82 if(GetController().get() != NULL)
83 {
84 GetController()->SetSceneToCanvasTransform(
85 AffineTransform2D::Combine(
86 AffineTransform2D::CreateScaling(zoom, zoom),
87 originalSceneToCanvas_));
83 88
84 aligner_.Apply(); 89 aligner_.Apply();
90 }
85 } 91 }
86 } 92 }
87 93
88 void ZoomSceneTracker::Cancel() 94 void ZoomSceneTracker::Cancel()
89 { 95 {
90 GetController()->SetSceneToCanvasTransform(originalSceneToCanvas_); 96 if(GetController().get() != NULL)
97 {
98 GetController()->SetSceneToCanvasTransform(originalSceneToCanvas_);
99 }
91 } 100 }
92 } 101 }