Răsfoiți Sursa

Use the Ref::Hold stack-based object to always correctly clean up.

Jon Watte 10 ani în urmă
părinte
comite
7ad63c39a9
1 a modificat fișierele cu 2 adăugiri și 6 ștergeri
  1. 2 6
      gameplay/src/AnimationClip.cpp

+ 2 - 6
gameplay/src/AnimationClip.cpp

@@ -588,7 +588,7 @@ bool AnimationClip::update(float elapsedTime)
 
 void AnimationClip::onBegin()
 {
-    addRef();
+    Ref::Hold ref(this);
 
     // Initialize animation to play.
     setClipStateBit(CLIP_IS_STARTED_BIT);
@@ -621,13 +621,11 @@ void AnimationClip::onBegin()
 
     // Fire script begin event
     fireScriptEvent<void>(GP_GET_SCRIPT_EVENT(AnimationClip, clipBegin), this);
-
-    release();
 }
 
 void AnimationClip::onEnd()
 {
-    addRef();
+    Ref::Hold ref(this);
 
     _blendWeight = 1.0f;
     resetClipStateBit(CLIP_ALL_BITS);
@@ -646,8 +644,6 @@ void AnimationClip::onEnd()
 
     // Fire script end event
     fireScriptEvent<void>(GP_GET_SCRIPT_EVENT(AnimationClip, clipEnd), this);
-
-    release();
 }
 
 bool AnimationClip::isClipStateBitSet(unsigned char bit) const