0fa23973e7b91afe4c67f1549ab9fdc474b1df03
[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) 2019 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
27 namespace Internal
28 {
29
30 namespace Adaptor
31 {
32
33 /**
34  * Simple structure to hold information about an event in time
35  * within Dali. For example when rendering started.
36  */
37 struct FrameTimeStamp
38 {
39
40   static const unsigned int BUFFER_NOT_USED = 2;  ///< no index buffer was used
41
42     /**
43      * Constructor
44      */
45     FrameTimeStamp();
46
47     /**
48      * Constructor
49      * @param frame the frame number
50      * @param microseconds the time from a monotonic clock
51      * @param bufferIndex  double buffered index used for performing an update / render
52      */
53     FrameTimeStamp( unsigned int frame, uint64_t microseconds, unsigned int bufferIndex = BUFFER_NOT_USED );
54
55     /**
56      * Constructor
57      * @param bufferIndex  double buffered index used for performing an update / render
58      */
59     FrameTimeStamp( unsigned int bufferIndex );
60
61     /**
62      * @param start start time
63      * @param end end time
64      * @return difference in microseconds between two time stamps
65      */
66     static unsigned int MicrosecondDiff( const FrameTimeStamp& start,const FrameTimeStamp& end );
67
68     unsigned int frame;            ///< Frame number ( not always available)
69     uint64_t     microseconds;     ///< Microsecond time stamp
70     unsigned int bufferIndex;      ///< The double buffered index used for performing an update / render
71   };
72 } // namespace Adaptor
73
74 } // namespace Internal
75
76 } // namespace Dali
77
78 #endif // DALI_INTERNAL_ADAPTOR_FRAME_TIME_STAMP_H
79