6fb29097ede9950ca2bb7b92a877a90c09fa4905
[platform/core/uifw/libds-tizen.git] / include / libds / interfaces / output.h
1 #ifndef LIBDS_INTERFACES_OUTPUT_H
2 #define LIBDS_INTERFACES_OUTPUT_H
3
4 #include <stdint.h>
5 #include <wayland-server.h>
6 #include <libds/output.h>
7 #include <libds/backend.h>
8 #include <libds/buffer.h>
9
10 #ifdef __cplusplus
11 extern "C" {
12 #endif
13
14 struct ds_output;
15
16 enum ds_output_state_field
17 {
18     DS_OUTPUT_STATE_BUFFER = 1 << 0,
19     DS_OUTPUT_STATE_DAMAGE = 1 << 1,
20     DS_OUTPUT_STATE_MODE = 1 << 2,
21     DS_OUTPUT_STATE_ENABLED = 1 << 3,
22     DS_OUTPUT_STATE_SCALE = 1 << 4,
23     DS_OUTPUT_STATE_TRANSFORM = 1 << 5,
24 };
25
26 struct ds_output_interface
27 {
28     void (*destroy)(struct ds_output *output);
29     bool (*commit)(struct ds_output *output);
30 };
31
32 struct ds_output_state
33 {
34     enum ds_output_state_field committed;
35     struct ds_buffer *buffer;
36     const struct ds_output_mode *mode;
37
38     bool enabled;
39 };
40
41 struct ds_output
42 {
43     const struct ds_output_interface *iface;
44
45     struct ds_backend *backend;
46
47     struct wl_display *display;
48     struct wl_global *global;
49
50     struct ds_buffer *back_buffer, *front_buffer;
51     const struct ds_output_mode *current_mode;
52     struct ds_output_state pending;
53
54     struct wl_list modes;
55
56     struct wl_listener display_destroy;
57
58     struct {
59         struct wl_signal destroy;
60         struct wl_signal frame;
61         struct wl_signal commit;
62     } events;
63
64     bool enabled;
65 };
66
67 void
68 ds_output_init(struct ds_output *output, struct ds_backend *backend,
69         const struct ds_output_interface *iface, struct wl_display *display);
70
71 #ifdef __cplusplus
72 }
73 #endif
74
75 #endif