1 #ifndef BACKEND_HEADLESS_H 2 #define BACKEND_HEADLESS_H 3 4 #include <wlr/backend/headless.h> 5 #include <wlr/backend/interface.h> 6 #include <wlr/render/gles2.h> 7 8 #define HEADLESS_DEFAULT_REFRESH (60 * 1000) // 60 Hz 9 10 struct wlr_headless_backend { 11 struct wlr_backend backend; 12 struct wlr_egl priv_egl; // may be uninitialized 13 struct wlr_egl *egl; 14 struct wlr_renderer *renderer; 15 struct wl_display *display; 16 struct wl_list outputs; 17 size_t last_output_num; 18 struct wl_list input_devices; 19 struct wl_listener display_destroy; 20 struct wl_listener renderer_destroy; 21 bool started; 22 GLenum internal_format; 23 }; 24 25 struct wlr_headless_output { 26 struct wlr_output wlr_output; 27 28 struct wlr_headless_backend *backend; 29 struct wl_list link; 30 31 GLuint fbo, rbo; 32 33 struct wl_event_source *frame_timer; 34 int frame_delay; // ms 35 }; 36 37 struct wlr_headless_input_device { 38 struct wlr_input_device wlr_input_device; 39 40 struct wlr_headless_backend *backend; 41 }; 42 43 struct wlr_headless_backend *headless_backend_from_backend( 44 struct wlr_backend *wlr_backend); 45 46 #endif 47