2 * Copyright (c) 2021 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 #include "processor-controller.h"
22 #include <dali/devel-api/common/stage-devel.h>
23 #include <dali/integration-api/adaptor-framework/adaptor.h>
29 ProcessorController::ProcessorController()
31 mPostHandler(nullptr),
32 mKeepRenderingApplied(false)
37 Dali::Adaptor::Get().RegisterProcessor(*this);
38 Dali::Adaptor::Get().RegisterProcessor(*this, true);
40 CALL_CATCH_EXCEPTION();
44 ProcessorController::~ProcessorController()
49 Dali::Adaptor::Get().UnregisterProcessor(*this);
50 Dali::Adaptor::Get().UnregisterProcessor(*this, true);
52 CALL_CATCH_EXCEPTION();
56 void ProcessorController::Process(bool postProcessor)
60 // We will ignore Awake events during Process running
61 mKeepRenderingApplied = true;
67 // Make awake events can be applied after PostProcess done.
68 mKeepRenderingApplied = false;
72 void ProcessorController::SetCallback( ProcessorControllerProcessCallback callback )
77 void ProcessorController::SetPostCallback( ProcessorControllerProcessCallback postCallback )
79 mPostHandler = postCallback;
82 void ProcessorController::RemoveCallback( ProcessorControllerProcessCallback callback )
86 void ProcessorController::RemovePostCallback( ProcessorControllerProcessCallback postCallback )
88 mPostHandler = nullptr;
91 void ProcessorController::Awake()
93 if(DALI_UNLIKELY(!mKeepRenderingApplied))
95 if(DALI_LIKELY(Dali::Stage::IsInstalled()))
97 auto stage = Dali::Stage::GetCurrent();
98 stage.KeepRendering(0.0f);
99 mKeepRenderingApplied = true;
104 // ProcessorController Bindings
105 SWIGEXPORT void * SWIGSTDCALL CSharp_Dali_new_ProcessorController() {
107 ProcessorController *result = 0 ;
111 result = (ProcessorController *)new ProcessorController();
112 } CALL_CATCH_EXCEPTION(0);
115 return (void *)result;
118 SWIGEXPORT void SWIGSTDCALL CSharp_Dali_delete_ProcessorController(void * jarg1) {
120 ProcessorController * arg1 = (ProcessorController *)jarg1;
124 } CALL_CATCH_EXCEPTION();
128 SWIGEXPORT void SWIGSTDCALL CSharp_Dali_ProcessorController_SetCallback( void* jarg1, ProcessorController::ProcessorControllerProcessCallback callback )
130 ProcessorController* processorController = (ProcessorController *) jarg1;
132 if( processorController )
134 processorController->SetCallback( callback );
138 SWIGEXPORT void SWIGSTDCALL CSharp_Dali_ProcessorController_SetPostCallback( void* jarg1, ProcessorController::ProcessorControllerProcessCallback callback )
140 ProcessorController* processorController = (ProcessorController *) jarg1;
142 if( processorController )
144 processorController->SetPostCallback( callback );
148 SWIGEXPORT void SWIGSTDCALL CSharp_Dali_ProcessorController_RemoveCallback( void* jarg1, ProcessorController::ProcessorControllerProcessCallback callback )
150 ProcessorController* processorController = (ProcessorController *) jarg1;
152 if( processorController )
154 processorController->RemoveCallback( callback );
158 SWIGEXPORT void SWIGSTDCALL CSharp_Dali_ProcessorController_RemovePostCallback( void* jarg1, ProcessorController::ProcessorControllerProcessCallback callback )
160 ProcessorController* processorController = (ProcessorController *) jarg1;
162 if( processorController )
164 processorController->RemovePostCallback( callback );
168 SWIGEXPORT void SWIGSTDCALL CSharp_Dali_ProcessorController_Awake( void* jarg1 )
170 ProcessorController* processorController = (ProcessorController *) jarg1;
172 if( processorController )
174 processorController->Awake();