2a25ab68bf4dbb32127528afd09f2090628aa93d
[platform/core/uifw/libtdm.git] / backends / virtual / tdm_virtual.h
1 #ifndef _TDM_VIRTUAL_H_
2 #define _TDM_VIRTUAL_H_
3
4 #ifdef HAVE_CONFIG_H
5 #include "config.h"
6 #endif
7
8 #include <stdio.h>
9 #include <string.h>
10 #include <stdlib.h>
11 #include <pthread.h>
12 #include <errno.h>
13 #include <unistd.h>
14 #include <limits.h>
15 #include <sys/types.h>
16 #include <sys/stat.h>
17 #include <sys/ioctl.h>
18 #include <fcntl.h>
19
20 #include <tbm_surface.h>
21 #include <tbm_surface_internal.h>
22 #include <tdm_backend.h>
23 #include <tdm_log.h>
24 #include <tdm_list.h>
25 #include <tdm_helper.h>
26
27 /* virtual backend functions (display) */
28 tdm_error    virtual_display_get_capability(tdm_backend_data *bdata, tdm_caps_display *caps);
29 tdm_output** virtual_display_get_outputs(tdm_backend_data *bdata, int *count, tdm_error *error);
30 tdm_error    virtual_display_get_fd(tdm_backend_data *bdata, int *fd);
31 tdm_error    virtual_display_handle_events(tdm_backend_data *bdata);
32
33 tdm_error    virtual_output_get_capability(tdm_output *output, tdm_caps_output *caps);
34 tdm_layer**  virtual_output_get_layers(tdm_output *output, int *count, tdm_error *error);
35 tdm_error    virtual_output_wait_vblank(tdm_output *output, int interval, int sync, void *user_data);
36 tdm_error    virtual_output_set_vblank_handler(tdm_output *output, tdm_output_vblank_handler func);
37 tdm_error    virtual_output_commit(tdm_output *output, int sync, void *user_data);
38 tdm_error    virtual_output_set_commit_handler(tdm_output *output, tdm_output_commit_handler func);
39 tdm_error    virtual_output_set_mode(tdm_output *output, const tdm_output_mode *mode);
40 tdm_error    virtual_output_get_mode(tdm_output *output, const tdm_output_mode **mode);
41
42 tdm_error    virtual_layer_get_capability(tdm_layer *layer, tdm_caps_layer *caps);
43 tdm_error    virtual_layer_set_info(tdm_layer *layer, tdm_info_layer *info);
44 tdm_error    virtual_layer_get_info(tdm_layer *layer, tdm_info_layer *info);
45 tdm_error    virtual_layer_set_buffer(tdm_layer *layer, tbm_surface_h buffer);
46 tdm_error    virtual_layer_unset_buffer(tdm_layer *layer);
47
48 #define RETURN_VAL_IF_FAIL(cond, val) {\
49     if (!(cond)) {\
50         TDM_ERR("'%s' failed", #cond);\
51         return val;\
52     }\
53 }
54
55 #define GOTO_IF_FAIL(cond, val) {\
56     if (!(cond)) {\
57         TDM_ERR("'%s' failed", #cond);\
58         goto val;\
59     }\
60 }
61
62 typedef struct _tdm_virtual_data
63 {
64     tdm_display *dpy;
65
66     int pipe[2];
67
68     struct list_head output_list;
69     struct list_head buffer_list;
70 } tdm_virtual_data;
71
72 tdm_error    tdm_virtual_display_create_output_list(tdm_virtual_data *virtual_data);
73 void         tdm_virtual_display_destroy_output_list(tdm_virtual_data *virtual_data);
74 tdm_error    tdm_virtual_display_create_layer_list(tdm_virtual_data *virtual_data);
75
76 #endif /* _TDM_VIRTUAL_H_ */