X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fupdate%2Fmanager%2Fscene-graph-frame-callback.cpp;h=6e1bd5ee6e4163d092a62618a9f295ec97ce89a8;hb=refs%2Fchanges%2F71%2F265971%2F3;hp=924e7e9751dc4a733cc551a654f2045143989f3f;hpb=50a368682cd76d60edd97ed7ddf29c705581b115;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/update/manager/scene-graph-frame-callback.cpp b/dali/internal/update/manager/scene-graph-frame-callback.cpp index 924e7e9..6e1bd5e 100644 --- a/dali/internal/update/manager/scene-graph-frame-callback.cpp +++ b/dali/internal/update/manager/scene-graph-frame-callback.cpp @@ -42,13 +42,7 @@ FrameCallback::~FrameCallback() mUpdateProxy->GetRootNode().RemoveObserver(*this); } - { - Mutex::ScopedLock lock(mMutex); - if(mFrameCallbackInterface) - { - FrameCallbackInterface::Impl::Get(*mFrameCallbackInterface).DisconnectFromSceneGraphObject(); - } - } + Invalidate(); } void FrameCallback::ConnectToSceneGraph(UpdateManager& updateManager, TransformManager& transformManager, Node& rootNode) @@ -70,7 +64,7 @@ bool FrameCallback::Update(BufferIndex bufferIndex, float elapsedSeconds, bool n } Mutex::ScopedLock lock(mMutex); - if(mFrameCallbackInterface) + if(mFrameCallbackInterface && mValid) { Dali::UpdateProxy updateProxy(*mUpdateProxy); mFrameCallbackInterface->Update(updateProxy, elapsedSeconds); @@ -83,10 +77,11 @@ bool FrameCallback::Update(BufferIndex bufferIndex, float elapsedSeconds, bool n void FrameCallback::Invalidate() { Mutex::ScopedLock lock(mMutex); - if(mFrameCallbackInterface) + if(mFrameCallbackInterface && mValid) { FrameCallbackInterface::Impl::Get(*mFrameCallbackInterface).DisconnectFromSceneGraphObject(); - mFrameCallbackInterface = nullptr; + mValid = false; + // Do not set mFrameCallbackInterface to nullptr as it is used for comparison checks by the comparison operator } }