1 #ifndef LIBDS_INTERFACES_OUTPUT_H
2 #define LIBDS_INTERFACES_OUTPUT_H
5 #include <wayland-server.h>
6 #include <libds/output.h>
7 #include <libds/backend.h>
8 #include <libds/buffer.h>
16 enum ds_output_state_field
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,
26 enum ds_output_state_mode_type
28 DS_OUTPUT_STATE_MODE_FIXED,
29 DS_OUTPUT_STATE_MODE_CUSTOM,
32 struct ds_output_interface
34 void (*destroy)(struct ds_output *output);
35 bool (*commit)(struct ds_output *output);
38 struct ds_output_state
40 enum ds_output_state_field committed;
41 struct ds_buffer *buffer;
43 enum ds_output_state_mode_type mode_type;
44 const struct ds_output_mode *mode;
46 int32_t width, height;
47 int32_t refresh; // mHz, may be zero
55 const struct ds_output_interface *iface;
57 struct ds_backend *backend;
59 struct wl_display *display;
60 struct wl_global *global;
62 struct ds_buffer *back_buffer, *front_buffer;
63 const struct ds_output_mode *current_mode;
64 int32_t width, height;
65 int32_t refresh; // mHz, may be zero
66 struct ds_output_state pending;
70 struct wl_listener display_destroy;
73 struct wl_signal destroy;
74 struct wl_signal frame;
75 struct wl_signal commit;
82 ds_output_init(struct ds_output *output, struct ds_backend *backend,
83 const struct ds_output_interface *iface, struct wl_display *display);