Merge "atspi: remove undefined method" into devel/master
[platform/core/uifw/dali-adaptor.git] / dali / internal / system / common / frame-time-stamp.h
1 #ifndef DALI_INTERNAL_ADAPTOR_FRAME_TIME_STAMP_H
2 #define DALI_INTERNAL_ADAPTOR_FRAME_TIME_STAMP_H
3
4 /*
5  * Copyright (c) 2021 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 <stdint.h>
23
24 namespace Dali
25 {
26 namespace Internal
27 {
28 namespace Adaptor
29 {
30 /**
31  * Simple structure to hold information about an event in time
32  * within Dali. For example when rendering started.
33  */
34 struct FrameTimeStamp
35 {
36   static const unsigned int BUFFER_NOT_USED = 2; ///< no index buffer was used
37
38   /**
39      * Constructor
40      */
41   FrameTimeStamp();
42
43   /**
44      * Constructor
45      * @param frame the frame number
46      * @param microseconds the time from a monotonic clock
47      * @param bufferIndex  double buffered index used for performing an update / render
48      */
49   FrameTimeStamp(unsigned int frame, uint64_t microseconds, unsigned int bufferIndex = BUFFER_NOT_USED);
50
51   /**
52      * Constructor
53      * @param bufferIndex  double buffered index used for performing an update / render
54      */
55   FrameTimeStamp(unsigned int bufferIndex);
56
57   /**
58      * @param start start time
59      * @param end end time
60      * @return difference in microseconds between two time stamps
61      */
62   static unsigned int MicrosecondDiff(const FrameTimeStamp& start, const FrameTimeStamp& end);
63
64   unsigned int frame;        ///< Frame number ( not always available)
65   uint64_t     microseconds; ///< Microsecond time stamp
66   unsigned int bufferIndex;  ///< The double buffered index used for performing an update / render
67 };
68 } // namespace Adaptor
69
70 } // namespace Internal
71
72 } // namespace Dali
73
74 #endif // DALI_INTERNAL_ADAPTOR_FRAME_TIME_STAMP_H