package version up to 1.7.7
[platform/core/uifw/libtdm.git] / ut / stubs / tdm_vblank.cpp
1 #include "tdm.h"
2 #include "tdm_private.h"
3
4 #define TDM_VBLANK_UINT_MAX 4294967295U
5 #define TDM_VBLANK_UINT_1Q  1073741823U     /* UINT_MAX / 4 */
6 #define TDM_VBLANK_UINT_3Q  3221225471U     /* UINT_MAX / 4 * 3 */
7
8 #define TDM_VBLANK_SEQ_REACHED_MAX(seq, last_seq) \
9         ((seq) < TDM_VBLANK_UINT_1Q && TDM_VBLANK_UINT_3Q < (last_seq))
10
11 #define VER(fmt, arg...)   TDM_ERR("[%p] "fmt, private_vblank, ##arg)
12 #define VWR(fmt, arg...)   TDM_WRN("[%p] "fmt, private_vblank, ##arg)
13 #define VIN(fmt, arg...)   TDM_INFO("[%p] "fmt, private_vblank, ##arg)
14 #define VDB(fmt, arg...)   TDM_DBG("[%p] "fmt, private_vblank, ##arg)
15
16 typedef enum {
17         VBLANK_TYPE_SW,
18         VBLANK_TYPE_SW_FAKE,
19         VBLANK_TYPE_HW,
20         VBLANK_TYPE_HW_SW,
21 } tdm_vblank_wait_type;
22
23 typedef struct _tdm_vblank_wait_info tdm_vblank_wait_info;
24
25 typedef struct _tdm_private_vblank {
26         struct list_head link;
27
28         tdm_display *dpy;
29         tdm_output *output;
30         tdm_output_dpms dpms;
31         unsigned int vrefresh;
32
33         unsigned int check_HW_or_SW;
34         unsigned int fps;
35         int offset;
36         unsigned int enable_fake;
37
38         double vblank_gap;
39         unsigned int quotient;
40
41         unsigned int last_seq;
42         unsigned int last_tv_sec;
43         unsigned int last_tv_usec;
44
45         /* for HW */
46         double HW_vblank_gap;
47         struct list_head HW_wait_list;
48
49         /* for SW */
50         tdm_event_loop_source *SW_timer;
51         struct list_head SW_wait_list;
52 } tdm_private_vblank;
53
54 struct _tdm_vblank_wait_info {
55         struct list_head link;
56         struct list_head valid_link;
57
58         unsigned int stamp;
59
60         unsigned int req_sec;
61         unsigned int req_usec;
62         unsigned int interval;
63
64         tdm_vblank_handler func;
65         void *user_data;
66         tdm_private_vblank *private_vblank;
67
68         tdm_vblank_wait_type type;
69
70         unsigned int target_sec;
71         unsigned int target_usec;
72         unsigned int target_seq;
73 };
74
75 static struct list_head vblank_list;
76 static struct list_head valid_wait_list;
77 static unsigned int vblank_list_inited;
78 static unsigned int stamp = 0;
79
80 static tdm_error _tdm_vblank_cb_vblank_SW(void *user_data);
81 static tdm_error _tdm_vblank_wait_SW(tdm_vblank_wait_info *wait_info);
82
83 tdm_vblank*
84 tdm_vblank_create(tdm_display *dpy, tdm_output *output, tdm_error *error)
85 {
86 }
87
88 void
89 tdm_vblank_destroy(tdm_vblank *vblank)
90 {
91 }
92
93 tdm_error
94 tdm_vblank_set_fps(tdm_vblank *vblank, unsigned int fps)
95 {
96 }
97
98 tdm_error
99 tdm_vblank_set_offset(tdm_vblank *vblank, int offset)
100 {
101 }
102
103 tdm_error
104 tdm_vblank_set_enable_fake(tdm_vblank *vblank, unsigned int enable_fake)
105 {
106 }
107
108 unsigned int
109 tdm_vblank_get_enable_fake(tdm_vblank *vblank)
110 {
111 }
112
113 tdm_error
114 tdm_vblank_wait(tdm_vblank *vblank, unsigned int req_sec, unsigned int req_usec,
115                                 unsigned int interval, tdm_vblank_handler func, void *user_data)
116 {
117 }
118
119 tdm_error
120 tdm_vblank_wait_seq(tdm_vblank *vblank, unsigned int req_sec, unsigned int req_usec,
121                                         unsigned int sequence, tdm_vblank_handler func, void *user_data)
122 {
123 }