Revert "[Tizen] Update RenderState in PreRender"
[platform/core/uifw/dali-core.git] / dali / internal / common / core-impl.cpp
index 41adba0..3b50a24 100644 (file)
@@ -24,7 +24,6 @@
 #include <dali/integration-api/debug.h>
 #include <dali/integration-api/events/event.h>
 #include <dali/integration-api/gl-context-helper-abstraction.h>
-#include <dali/integration-api/gl-sync-abstraction.h>
 #include <dali/integration-api/platform-abstraction.h>
 #include <dali/integration-api/processor-interface.h>
 #include <dali/integration-api/render-controller.h>
@@ -49,7 +48,6 @@
 
 #include <dali/internal/render/common/performance-monitor.h>
 #include <dali/internal/render/common/render-manager.h>
-#include <dali/internal/render/gl-resources/context.h>
 
 using Dali::Internal::SceneGraph::DiscardQueue;
 using Dali::Internal::SceneGraph::RenderManager;
@@ -73,7 +71,6 @@ namespace Internal
 using Integration::Event;
 using Integration::GlAbstraction;
 using Integration::GlContextHelperAbstraction;
-using Integration::GlSyncAbstraction;
 using Integration::PlatformAbstraction;
 using Integration::RenderController;
 using Integration::RenderStatus;
@@ -182,12 +179,10 @@ void Core::RecoverFromContextLoss()
 
 void Core::ContextCreated()
 {
-  mRenderManager->ContextCreated();
 }
 
 void Core::ContextDestroyed()
 {
-  mRenderManager->ContextDestroyed();
 }
 
 void Core::Update(float elapsedSeconds, uint32_t lastVSyncTimeMilliseconds, uint32_t nextVSyncTimeMilliseconds, Integration::UpdateStatus& status, bool renderToFboEnabled, bool isRenderingToFbo)
@@ -297,6 +292,9 @@ void Core::ProcessEvents()
   // Run the size negotiation after event processing finished signal
   mRelayoutController->Relayout();
 
+  // Run any registered post processors
+  RunPostProcessors();
+
   // Rebuild depth tree after event processing has finished
   for(auto scene : scenes)
   {
@@ -328,17 +326,35 @@ uint32_t Core::GetMaximumUpdateCount() const
   return MAXIMUM_UPDATE_COUNT;
 }
 
-void Core::RegisterProcessor(Integration::Processor& processor)
+void Core::RegisterProcessor(Integration::Processor& processor, bool postProcessor)
 {
-  mProcessors.PushBack(&processor);
+  if(postProcessor)
+  {
+    mPostProcessors.PushBack(&processor);
+  }
+  else
+  {
+    mProcessors.PushBack(&processor);
+  }
 }
 
-void Core::UnregisterProcessor(Integration::Processor& processor)
+void Core::UnregisterProcessor(Integration::Processor& processor, bool postProcessor)
 {
-  auto iter = std::find(mProcessors.Begin(), mProcessors.End(), &processor);
-  if(iter != mProcessors.End())
+  if(postProcessor)
   {
-    mProcessors.Erase(iter);
+    auto iter = std::find(mPostProcessors.Begin(), mPostProcessors.End(), &processor);
+    if(iter != mPostProcessors.End())
+    {
+      mPostProcessors.Erase(iter);
+    }
+  }
+  else
+  {
+    auto iter = std::find(mProcessors.Begin(), mProcessors.End(), &processor);
+    if(iter != mProcessors.End())
+    {
+      mProcessors.Erase(iter);
+    }
   }
 }
 
@@ -351,7 +367,21 @@ void Core::RunProcessors()
   {
     if(processor)
     {
-      processor->Process();
+      processor->Process(false);
+    }
+  }
+}
+
+void Core::RunPostProcessors()
+{
+  // Copy processor pointers to prevent changes to vector affecting loop iterator.
+  Dali::Vector<Integration::Processor*> processors(mPostProcessors);
+
+  for(auto processor : processors)
+  {
+    if(processor)
+    {
+      processor->Process(true);
     }
   }
 }