[AT-SPI] Squashed implementation
[platform/core/uifw/dali-adaptor.git] / dali / internal / adaptor / common / thread-controller-interface.h
1 #ifndef DALI_INTERNAL_THREAD_CONTROLLER_INTERFACE_H
2 #define DALI_INTERNAL_THREAD_CONTROLLER_INTERFACE_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 #include <dali/public-api/signals/callback.h>
22
23 namespace Dali
24 {
25
26 class RenderSurfaceInterface;
27
28 namespace Internal
29 {
30
31 namespace Adaptor
32 {
33
34 enum class UpdateMode
35 {
36   NORMAL,                     ///< Update and render
37   SKIP_RENDER,                ///< Update and resource upload but no rendering
38   FORCE_RENDER                ///< Force update and render
39 };
40
41 enum class ThreadMode
42 {
43   NORMAL,                     ///< The thread runs continuously
44   RUN_IF_REQUESTED            ///< The threads runs when it is requested
45 };
46
47 /**
48  * Interface Class for all controlling threads.
49  */
50 class ThreadControllerInterface
51 {
52 public:
53
54   /**
55    * Virtual destructor. Not intended as base class.
56    */
57   virtual ~ThreadControllerInterface() { }
58
59   /**
60    * Initializes the thread controller
61    */
62   virtual void Initialize() = 0;
63
64   /**
65    * @copydoc Dali::Adaptor::Start()
66    */
67   virtual void Start() = 0;
68
69   /**
70    * @copydoc Dali::Adaptor::Pause()
71    */
72   virtual void Pause() = 0;
73
74   /**
75    * @copydoc Dali::Adaptor::Resume()
76    */
77   virtual void Resume() = 0;
78
79   /**
80    * @copydoc Dali::Adaptor::Stop()
81    */
82   virtual void Stop() = 0;
83
84   /**
85    * Called by the adaptor when core requires another update
86    */
87   virtual void RequestUpdate() = 0;
88
89   /**
90    * Called by the adaptor when core requires one update
91    * If Adaptor is paused, we do one update/render and return to pause
92    * @param updateMode The update mode (i.e. i.e. either update & render or skip rendering)
93    */
94   virtual void RequestUpdateOnce( UpdateMode updateMode ) = 0;
95
96   /**
97    * Replaces the surface.
98    * @param surface new surface
99    */
100   virtual void ReplaceSurface( Dali::RenderSurfaceInterface* surface ) = 0;
101
102   /**
103    * Deletes the surface.
104    * @param[in] surface The surface to be deleted
105    */
106   virtual void DeleteSurface( Dali::RenderSurfaceInterface* surface ) = 0;
107
108   /**
109    * Resize the surface.
110    */
111   virtual void ResizeSurface() = 0;
112
113   /**
114    * Wait until the graphics is initialised.
115    */
116   virtual void WaitForGraphicsInitialization() = 0;
117
118   /**
119    * @copydoc Dali::Adaptor::SetRenderRefreshRate()
120    */
121   virtual void SetRenderRefreshRate( unsigned int numberOfVSyncsPerRender ) = 0;
122
123   /**
124    * @copydoc Dali::Adaptor::SetPreRenderCallback()
125    */
126   virtual void SetPreRenderCallback( CallbackBase* callback ) = 0;
127
128   /**
129    * @brief Adds the new surface.
130    * @param surface new surface
131    */
132   virtual void AddSurface( Dali::RenderSurfaceInterface* surface ) = 0;
133
134 protected:
135
136   /**
137    * Constructor
138    */
139   ThreadControllerInterface() { }
140
141 private:
142
143   // Undefined copy constructor.
144   ThreadControllerInterface( const ThreadControllerInterface& );
145
146   // Undefined assignment operator.
147   ThreadControllerInterface& operator=( const ThreadControllerInterface& );
148 };
149
150 } // namespace Adaptor
151
152 } // namespace Internal
153
154 } // namespace Dali
155
156 #endif // DALI_INTERNAL_THREAD_CONTROLLER_INTERFACE_H