Merge branch 'devel/master' into sandbox/dkdk/tizen
[platform/core/uifw/dali-adaptor.git] / dali / integration-api / adaptor-framework / trigger-event-interface.h
1 #ifndef DALI_INTEGRATION_TRIGGER_EVENT_INTERFACE_H
2 #define DALI_INTEGRATION_TRIGGER_EVENT_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 namespace Dali
22 {
23 /**
24  * @brief Interface for a trigger event class.
25  *
26  * The trigger event is a way of running a function call back on the main event thread of Dali.
27  * To create a trigger event use the factory interface.
28  */
29 class TriggerEventInterface
30 {
31 public:
32   /**
33    * @brief trigger event options
34    */
35   enum Options
36   {
37     KEEP_ALIVE_AFTER_TRIGGER,
38     DELETE_AFTER_TRIGGER, // automatically delete the trigger event object, after Trigger() is called.
39   };
40
41   /**
42    * @brief Triggers the event.
43    * This method cannot ever block, it needs to return immediately.
44    * This can be called from one thread in order to wake up another thread.
45    */
46   virtual void Trigger() = 0;
47
48 protected:
49   /**
50    * @brief Constructor
51    */
52   TriggerEventInterface()
53   {
54   }
55
56 public:
57   /**
58    * @brief Virtual destructor
59    */
60   virtual ~TriggerEventInterface()
61   {
62   }
63
64 private:
65   // Undefined copy constructor.
66   TriggerEventInterface(const TriggerEventInterface&);
67
68   // Undefined assignment operator.
69   TriggerEventInterface& operator=(const TriggerEventInterface&);
70 };
71
72 } // namespace Dali
73
74 #endif // DALI_INTEGRATION_TRIGGER_EVENT_INTERFACE_H