c005b3763a84606e9c26c10a9b6791a4296ba524
[platform/adaptation/libtdm-drm.git] / src / libtdm-drm / tdm_drm_hwc_window.c
1 #ifdef HAVE_CONFIG_H
2 #include "config.h"
3 #endif
4
5 #include "tdm_drm.h"
6
7 void
8 drm_hwc_window_destroy(tdm_hwc_window *hwc_window)
9 {
10         tdm_drm_hwc_window_data *hwc_window_data = hwc_window;
11
12         RETURN_IF_FAIL(hwc_window_data != NULL);
13
14         LIST_DEL(&hwc_window_data->link);
15
16         free(hwc_window_data);
17 }
18
19 tdm_error
20 drm_hwc_window_set_composition_type(tdm_hwc_window *hwc_window,
21                                                                         tdm_hwc_window_composition comp_type)
22 {
23         tdm_drm_hwc_window_data *hwc_window_data = hwc_window;
24         tdm_drm_hwc_data *hwc_data = hwc_window_data->hwc_data;
25
26         RETURN_VAL_IF_FAIL(hwc_window_data != NULL, TDM_ERROR_INVALID_PARAMETER);
27         RETURN_VAL_IF_FAIL(hwc_data != NULL, TDM_ERROR_INVALID_PARAMETER);
28
29         /* change the client_type when it is different from one which has before */
30         if (hwc_window_data->client_type == comp_type)
31                 return TDM_ERROR_NONE;
32
33         hwc_window_data->client_type = comp_type;
34
35         return TDM_ERROR_NONE;
36 }
37
38 tdm_error
39 drm_hwc_window_set_buffer_damage(tdm_hwc_window *hwc_window, tdm_region damage)
40 {
41         tdm_drm_hwc_window_data *hwc_window_data = hwc_window;
42
43         RETURN_VAL_IF_FAIL(hwc_window_data != NULL, TDM_ERROR_INVALID_PARAMETER);
44
45         //TODO::
46
47         return TDM_ERROR_NONE;
48 }
49
50 tdm_error
51 drm_hwc_window_set_info(tdm_hwc_window *hwc_window, tdm_hwc_window_info *info)
52 {
53         tdm_drm_hwc_window_data *hwc_window_data = hwc_window;
54         tdm_drm_hwc_data *hwc_data;
55
56         RETURN_VAL_IF_FAIL(hwc_window_data != NULL, TDM_ERROR_INVALID_PARAMETER);
57         hwc_data = hwc_window_data->hwc_data;
58         RETURN_VAL_IF_FAIL(hwc_data != NULL, TDM_ERROR_INVALID_PARAMETER);
59         RETURN_VAL_IF_FAIL(info != NULL, TDM_ERROR_INVALID_PARAMETER);
60
61         if (!memcmp(&hwc_window_data->info, info, sizeof(tdm_hwc_window_info)))
62                 return TDM_ERROR_NONE;
63
64         hwc_window_data->info = *info;
65
66         return TDM_ERROR_NONE;
67 }
68
69 tdm_error
70 drm_hwc_window_set_buffer(tdm_hwc_window *hwc_window, tbm_surface_h surface)
71 {
72         tdm_drm_hwc_window_data *hwc_window_data = hwc_window;
73         tdm_error err = TDM_ERROR_OPERATION_FAILED;
74
75         RETURN_VAL_IF_FAIL(hwc_window_data != NULL, err);
76
77         if (hwc_window_data->surface == surface)
78                 return TDM_ERROR_NONE;
79
80         hwc_window_data->surface = surface;
81
82         return TDM_ERROR_NONE;
83 }
84
85 tdm_error
86 drm_hwc_window_set_property(tdm_hwc_window *hwc_window, unsigned int id, tdm_value value)
87 {
88         tdm_drm_hwc_window_data *hwc_window_data = hwc_window;
89
90         RETURN_VAL_IF_FAIL(hwc_window_data != NULL, TDM_ERROR_INVALID_PARAMETER);
91
92         //TODO:
93
94         return TDM_ERROR_NONE;
95 }
96
97 tdm_error
98 drm_hwc_window_get_property(tdm_hwc_window *hwc_window, unsigned int id, tdm_value *value)
99 {
100         tdm_drm_hwc_window_data *hwc_window_data = hwc_window;
101
102         RETURN_VAL_IF_FAIL(hwc_window_data != NULL, TDM_ERROR_INVALID_PARAMETER);
103
104         //TODO:
105
106         return TDM_ERROR_NONE;
107 }
108
109 tdm_error
110 drm_hwc_window_get_constraints(tdm_hwc_window *hwc_window, int *constraints)
111 {
112         tdm_drm_hwc_window_data *hwc_window_data = hwc_window;
113
114         RETURN_VAL_IF_FAIL(hwc_window_data != NULL, TDM_ERROR_INVALID_PARAMETER);
115         RETURN_VAL_IF_FAIL(constraints != NULL, TDM_ERROR_INVALID_PARAMETER);
116
117         // no constraints
118         *constraints = 0;
119
120         return TDM_ERROR_NONE;
121 }
122
123 tdm_error
124 drm_hwc_window_set_name(tdm_hwc_window *hwc_window, const char *name)
125 {
126         tdm_drm_hwc_window_data *hwc_window_data = hwc_window;
127
128         RETURN_VAL_IF_FAIL(hwc_window_data != NULL, TDM_ERROR_INVALID_PARAMETER);
129
130         if (!name)
131                 return TDM_ERROR_NONE;
132
133         snprintf(hwc_window_data->name, TDM_NAME_LEN, "%s", name);
134
135         return TDM_ERROR_NONE;
136 }
137
138 tdm_error
139 drm_hwc_window_set_cursor_image(tdm_hwc_window *hwc_window, int width, int height, int stride, void *ptr)
140 {
141         tdm_drm_hwc_window_data *hwc_window_data = hwc_window;
142
143         RETURN_VAL_IF_FAIL(hwc_window_data != NULL, TDM_ERROR_INVALID_PARAMETER);
144         RETURN_VAL_IF_FAIL(hwc_window_data->client_type == TDM_HWC_WIN_COMPOSITION_CURSOR, TDM_ERROR_INVALID_PARAMETER);
145
146         hwc_window_data->cursor_img.width = width;
147         hwc_window_data->cursor_img.height = height;
148         hwc_window_data->cursor_img.stride = stride;
149         hwc_window_data->cursor_img.ptr = ptr;
150
151         hwc_window_data->cursor_img_refresh = 1;
152
153         return TDM_ERROR_NONE;
154 }