Use existing callback ID for recurring callbacks
[platform/core/uifw/dali-adaptor.git] / dali / internal / system / common / configuration-manager.h
1 #ifndef DALI_INTERNAL_ENVIRONMENT_CONFIGURATION_MANAGER_H
2 #define DALI_INTERNAL_ENVIRONMENT_CONFIGURATION_MANAGER_H
3
4 /*
5  * Copyright (c) 2020 Samsung Electronics Co., Ltd.
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  */
20
21 // EXTERNAL INCLUDES
22 #include <memory>
23 #include <string>
24
25 namespace Dali
26 {
27
28 class FileStream;
29
30 namespace Internal
31 {
32 namespace Adaptor
33 {
34
35 class EglGraphics;
36 class ThreadController;
37
38 /**
39  * This class retrieves and caches the system configuration.
40  *
41  */
42 class ConfigurationManager
43 {
44 public:
45
46   /**
47    * @brief Constructor
48    */
49   ConfigurationManager( std::string systemCachePath, EglGraphics* eglGraphics, ThreadController* threadController );
50
51   /**
52    * @brief Virtual Destructor for interface cleanup
53    */
54   virtual ~ConfigurationManager();
55
56   /**
57    * @brief Retrieve all keys from the config file if the file exists.
58    */
59   void RetrieveKeysFromConfigFile( const std::string& configFilePath );
60
61   /**
62    * @brief Get the maximum texture size.
63    * @return The maximum texture size
64    */
65   unsigned int GetMaxTextureSize();
66
67   /**
68    * @brief Check whether multiple window is supported
69    * @return Whether multiple window is supported
70    */
71   bool IsMultipleWindowSupported();
72
73   // Deleted copy constructor.
74   ConfigurationManager( const ConfigurationManager& ) = delete;
75
76   // Deleted move constructor.
77   ConfigurationManager( const ConfigurationManager&& ) = delete;
78
79   // Deleted assignment operator.
80   ConfigurationManager& operator=( const ConfigurationManager& ) = delete;
81
82   // Deleted move assignment operator.
83   ConfigurationManager& operator=( const ConfigurationManager&& ) = delete;
84
85 private: // Data
86
87   std::string mSystemCacheFilePath;              ///< The path of system cache file
88   EglGraphics* mEglGraphics;                     ///< EGL graphics
89   ThreadController* mThreadController;           ///< The thread controller
90   unsigned int mMaxTextureSize;                  ///< The largest texture that the GL can handle
91   bool mIsMultipleWindowSupported:1;             ///< Whether multiple window is supported by the GLES
92   bool mMaxTextureSizeCached:1;                  ///< Whether we have checked the maximum texture size
93   bool mIsMultipleWindowSupportedCached:1;       ///< Whether we have checked the support of multiple window
94 };
95
96 } // Adaptor
97 } // Internal
98 } // Dali
99
100 #endif // DALI_INTERNAL_ENVIRONMENT_CONFIGURATION_MANAGER_H