[3.0] Temporary change to fix homescreen issue
[platform/core/uifw/dali-core.git] / dali / internal / event / events / actor-observer.cpp
index 51c33a0..42b9120 100644 (file)
@@ -16,9 +16,9 @@
  */
 
 // CLASS HEADER
+#include <dali/internal/event/events/actor-observer.h>
 #include <dali/integration-api/debug.h>
 #include <dali/internal/event/actors/actor-impl.h>
-#include <dali/internal/event/events/actor-observer.h>
 
 namespace Dali
 {
@@ -33,25 +33,35 @@ Debug::Filter* gLogFilter = Debug::Filter::New(Debug::NoLogging, false, "LOG_ACT
 #endif // defined(DEBUG_ENABLED)
 }
 
-ActorObserver::ActorObserver::ActorObserver()
+ActorObserver::ActorObserver()
 : mActor ( NULL ),
-  mActorDisconnected(false)
+  mActorDisconnected( false ),
+  mRemoveCallback( NULL )
 {
   DALI_LOG_TRACE_METHOD( gLogFilter );
 }
 
-ActorObserver::ActorObserver::~ActorObserver()
+ActorObserver::ActorObserver( CallbackBase* callback )
+: mActor ( NULL ),
+  mActorDisconnected( false ),
+  mRemoveCallback( callback )
+{
+}
+
+ActorObserver::~ActorObserver()
 {
   DALI_LOG_TRACE_METHOD( gLogFilter );
   SetActor( NULL );
+
+  delete mRemoveCallback;
 }
 
-Actor* ActorObserver::ActorObserver::GetActor()
+Actor* ActorObserver::GetActor()
 {
   return mActorDisconnected ? NULL : mActor;
 }
 
-void ActorObserver::ActorObserver::SetActor( Actor* actor )
+void ActorObserver::SetActor( Actor* actor )
 {
   DALI_LOG_TRACE_METHOD( gLogFilter );
 
@@ -72,7 +82,7 @@ void ActorObserver::ActorObserver::SetActor( Actor* actor )
   mActorDisconnected = false;
 }
 
-void ActorObserver::ActorObserver::ResetActor()
+void ActorObserver::ResetActor()
 {
   if ( mActor )
   {
@@ -83,22 +93,27 @@ void ActorObserver::ActorObserver::ResetActor()
   }
 }
 
-void ActorObserver::ActorObserver::SceneObjectRemoved( ProxyObject& proxy )
+void ActorObserver::SceneObjectRemoved( Object& object )
 {
   DALI_LOG_TRACE_METHOD( gLogFilter );
 
-  if ( mActor == &proxy )
+  if ( mActor == &object )
   {
-    // do not call proxy.RemoveObserver here, proxy is currently iterating through observers... you wouldnt want to upset proxy now would you?
+    if ( mRemoveCallback )
+    {
+//      CallbackBase::Execute( *mRemoveCallback, mActor );
+    }
+
+    // do not call object.RemoveObserver here, object is currently iterating through observers
     mActorDisconnected = true;
   }
 }
 
-void ActorObserver::ActorObserver::ProxyDestroyed(ProxyObject& proxy)
+void ActorObserver::ObjectDestroyed(Object& object)
 {
   DALI_LOG_TRACE_METHOD( gLogFilter );
 
-  if ( mActor == &proxy )
+  if ( mActor == &object )
   {
     DALI_LOG_INFO(gLogFilter, Debug::Verbose, "Stop Observing:             %p\n", mActor);
     mActor = NULL;