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 <dali/internal/system/common/thread-controller.h>
22 #include <dali/internal/adaptor/common/combined-update-render-controller.h>
23 #include <dali/internal/adaptor/common/thread-controller-interface.h>
24 #include <dali/internal/system/common/environment-options.h>
32 ThreadController::ThreadController(AdaptorInternalServices& adaptorInterfaces, const EnvironmentOptions& environmentOptions, ThreadMode threadMode)
33 : mThreadControllerInterface(NULL)
35 switch(environmentOptions.GetThreadingMode())
37 case ThreadingMode::COMBINED_UPDATE_RENDER:
39 mThreadControllerInterface = new CombinedUpdateRenderController(adaptorInterfaces, environmentOptions, threadMode);
45 ThreadController::~ThreadController()
47 delete mThreadControllerInterface;
50 void ThreadController::Initialize()
52 mThreadControllerInterface->Initialize();
55 void ThreadController::Start()
57 mThreadControllerInterface->Start();
60 void ThreadController::Pause()
62 mThreadControllerInterface->Pause();
65 void ThreadController::Resume()
67 mThreadControllerInterface->Resume();
70 void ThreadController::Stop()
72 mThreadControllerInterface->Stop();
75 void ThreadController::RequestUpdate()
77 mThreadControllerInterface->RequestUpdate();
80 void ThreadController::RequestUpdateOnce(UpdateMode updateMode)
82 mThreadControllerInterface->RequestUpdateOnce(updateMode);
85 void ThreadController::ReplaceSurface(Dali::RenderSurfaceInterface* newSurface)
87 mThreadControllerInterface->ReplaceSurface(newSurface);
90 void ThreadController::DeleteSurface(Dali::RenderSurfaceInterface* surface)
92 mThreadControllerInterface->DeleteSurface(surface);
95 void ThreadController::ResizeSurface()
97 mThreadControllerInterface->ResizeSurface();
100 void ThreadController::WaitForGraphicsInitialization()
102 mThreadControllerInterface->WaitForGraphicsInitialization();
105 void ThreadController::SetRenderRefreshRate(unsigned int numberOfVSyncsPerRender)
107 mThreadControllerInterface->SetRenderRefreshRate(numberOfVSyncsPerRender);
110 void ThreadController::SetPreRenderCallback(CallbackBase* callback)
112 mThreadControllerInterface->SetPreRenderCallback(callback);
115 void ThreadController::AddSurface(Dali::RenderSurfaceInterface* newSurface)
117 mThreadControllerInterface->AddSurface(newSurface);
120 } // namespace Adaptor
122 } // namespace Internal