[4.0] Use correct method to delete CallbackData of container in loop.
[platform/core/uifw/dali-adaptor.git] / adaptors / common / event-loop / ecore / ecore-callback-manager.cpp
old mode 100644 (file)
new mode 100755 (executable)
index c130bda..8c7dfb6
@@ -140,20 +140,21 @@ bool EcoreCallbackManager::AddIdleCallback( CallbackBase* callback )
 
 void EcoreCallbackManager::RemoveIdleCallback( CallbackBase* callback )
 {
-  for( CallbackList::iterator it = mCallbackContainer.begin(),
-         endIt = mCallbackContainer.end();
-       it != endIt;
-       ++it )
+  CallbackList::iterator it = mCallbackContainer.begin();
+
+  while( mCallbackContainer.end() != it )
   {
     CallbackData* data = *it;
 
     if( data->mCallback == callback )
     {
-      // remove callback data from the container.
-      CallbackBase::Execute( *data->mRemoveFromContainerFunction, data );
-
+      it = mCallbackContainer.erase( it );
       ecore_idler_del( data->mIdler );
     }
+    else
+    {
+      it++;
+    }
   }
 }