ProcessorController::ProcessorController()
: mHandler(nullptr),
+ mPostHandler(nullptr),
mKeepRenderingApplied(false)
{
{
try
{
Dali::Adaptor::Get().RegisterProcessor(*this);
+ Dali::Adaptor::Get().RegisterProcessor(*this, true);
}
CALL_CATCH_EXCEPTION();
}
try
{
Dali::Adaptor::Get().UnregisterProcessor(*this);
+ Dali::Adaptor::Get().UnregisterProcessor(*this, true);
}
CALL_CATCH_EXCEPTION();
}
void ProcessorController::Process(bool postProcessor)
{
- mHandler();
- mKeepRenderingApplied = false;
+ if(!postProcessor)
+ {
+ // We will ignore Awake events during Process running
+ mKeepRenderingApplied = true;
+ mHandler();
+ }
+ else
+ {
+ mPostHandler();
+ // Make awake events can be applied after PostProcess done.
+ mKeepRenderingApplied = false;
+ }
}
void ProcessorController::SetCallback( ProcessorControllerProcessCallback callback )
mHandler = callback;
}
+void ProcessorController::SetPostCallback( ProcessorControllerProcessCallback postCallback )
+{
+ mPostHandler = postCallback;
+}
+
void ProcessorController::RemoveCallback( ProcessorControllerProcessCallback callback )
{
mHandler = nullptr;
}
+void ProcessorController::RemovePostCallback( ProcessorControllerProcessCallback postCallback )
+{
+ mPostHandler = nullptr;
+}
void ProcessorController::Awake()
{
}
}
+SWIGEXPORT void SWIGSTDCALL CSharp_Dali_ProcessorController_SetPostCallback( void* jarg1, ProcessorController::ProcessorControllerProcessCallback callback )
+{
+ ProcessorController* processorController = (ProcessorController *) jarg1;
+
+ if( processorController )
+ {
+ processorController->SetPostCallback( callback );
+ }
+}
+
SWIGEXPORT void SWIGSTDCALL CSharp_Dali_ProcessorController_RemoveCallback( void* jarg1, ProcessorController::ProcessorControllerProcessCallback callback )
{
ProcessorController* processorController = (ProcessorController *) jarg1;
}
}
+SWIGEXPORT void SWIGSTDCALL CSharp_Dali_ProcessorController_RemovePostCallback( void* jarg1, ProcessorController::ProcessorControllerProcessCallback callback )
+{
+ ProcessorController* processorController = (ProcessorController *) jarg1;
+
+ if( processorController )
+ {
+ processorController->RemovePostCallback( callback );
+ }
+}
+
SWIGEXPORT void SWIGSTDCALL CSharp_Dali_ProcessorController_Awake( void* jarg1 )
{
ProcessorController* processorController = (ProcessorController *) jarg1;
void SetCallback( ProcessorControllerProcessCallback callback );
/**
+ * @brief Set the postcallback to be executed when dali-core calls the overriden Process(true) api.
+ * @param[in] postCallback, function to be called
+ */
+ void SetPostCallback( ProcessorControllerProcessCallback postCallback );
+
+ /**
* @brief Remove callback on this ProcessorController.
* The removed callback will not be called anymore.
* @param[in] callback, function will be removed
void RemoveCallback( ProcessorControllerProcessCallback callback );
/**
+ * @brief Remove postcallback on this ProcessorController.
+ * The removed callback will not be called anymore.
+ * @param[in] postCallback, function will be removed
+ */
+ void RemovePostCallback( ProcessorControllerProcessCallback postCallback );
+
+ /**
* @brief Awake update thread so dali-core calls the overriden Process() api.
*/
void Awake();
private:
- ProcessorControllerProcessCallback mHandler;
+ ProcessorControllerProcessCallback mHandler; ///< PreProcessHandler before Relayout
+ ProcessorControllerProcessCallback mPostHandler; ///< PostProcessHandler after Relayout
bool mKeepRenderingApplied; ///< True if we call Stage::KeepRendering(0.0f). It need to avoid duplicated keep rendering call
};