[dali_2.3.38] Merge branch 'devel/master'
[platform/core/uifw/dali-adaptor.git] / dali / internal / adaptor / common / adaptor-builder-impl.cpp
1 /*
2  * Copyright (c) 2024 Samsung Electronics Co., Ltd.
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  *
16  */
17
18 // CLASS HEADER
19 #include <dali/internal/adaptor/common/adaptor-builder-impl.h>
20
21 // INTERNAL INCLUDES
22 #include <dali/internal/window-system/common/display-utils.h>
23
24 #if defined(VULKAN_ENABLED)
25 #include <dali/internal/graphics/vulkan/vulkan-graphics-factory.h>
26 #else
27 #include <dali/internal/graphics/gles/egl-graphics-factory.h>
28 #endif
29
30 namespace Dali::Internal::Adaptor
31 {
32 namespace
33 {
34 static AdaptorBuilder* gAdaptorBuilder = nullptr;
35 }
36 AdaptorBuilder& AdaptorBuilder::Get(EnvironmentOptions& environmentOptions)
37 {
38   if(gAdaptorBuilder == nullptr)
39   {
40     gAdaptorBuilder = new AdaptorBuilder(environmentOptions);
41   }
42   return *gAdaptorBuilder;
43 }
44
45 void AdaptorBuilder::Finalize()
46 {
47   delete gAdaptorBuilder;
48   gAdaptorBuilder = nullptr;
49 }
50
51 AdaptorBuilder::AdaptorBuilder(EnvironmentOptions& environmentOptions)
52 : mEnvironmentOptions(environmentOptions)
53 {
54   // Construct Graphics Factory
55   mGraphicsFactory = Utils::MakeUnique<GraphicsFactory>(environmentOptions);
56 }
57
58 GraphicsFactoryInterface& AdaptorBuilder::GetGraphicsFactory() const
59 {
60   return *mGraphicsFactory;
61 }
62
63 } // namespace Dali::Internal::Adaptor