diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/backend/headless.h | 35 | ||||
-rw-r--r-- | include/wlr/backend/headless.h | 14 | ||||
-rw-r--r-- | include/wlr/interfaces/wlr_output.h | 6 | ||||
-rw-r--r-- | include/wlr/render/egl.h | 3 | ||||
-rw-r--r-- | include/wlr/types/wlr_output.h | 1 |
5 files changed, 56 insertions, 3 deletions
diff --git a/include/backend/headless.h b/include/backend/headless.h new file mode 100644 index 00000000..91ff37dd --- /dev/null +++ b/include/backend/headless.h @@ -0,0 +1,35 @@ +#ifndef BACKEND_HEADLESS_H +#define BACKEND_HEADLESS_H + +#include <wlr/backend/interface.h> +#include <wlr/backend/headless.h> +#include <wlr/types/wlr_output.h> + +struct wlr_headless_backend { + struct wlr_backend backend; + struct wlr_egl egl; + struct wl_display *display; + struct wl_list outputs; + struct wl_list input_devices; + struct wl_listener display_destroy; + bool started; +}; + +struct wlr_headless_output { + struct wlr_output wlr_output; + + struct wlr_headless_backend *backend; + struct wl_list link; + + void *egl_surface; + struct wl_event_source *frame_timer; + int frame_delay; // ms +}; + +struct wlr_headless_input_device { + struct wlr_input_device wlr_input_device; + + struct wlr_headless_backend *backend; +}; + +#endif diff --git a/include/wlr/backend/headless.h b/include/wlr/backend/headless.h new file mode 100644 index 00000000..68ad84da --- /dev/null +++ b/include/wlr/backend/headless.h @@ -0,0 +1,14 @@ +#ifndef WLR_BACKEND_HEADLESS_H +#define WLR_BACKEND_HEADLESS_H + +#include <wlr/backend.h> +#include <wlr/types/wlr_input_device.h> + +struct wlr_backend *wlr_headless_backend_create(struct wl_display *display); +struct wlr_output *wlr_headless_add_output(struct wlr_backend *backend, + unsigned int width, unsigned int height); +struct wlr_input_device *wlr_headless_add_input_device( + struct wlr_backend *backend, enum wlr_input_device_type type); +bool wlr_backend_is_headless(struct wlr_backend *backend); + +#endif diff --git a/include/wlr/interfaces/wlr_output.h b/include/wlr/interfaces/wlr_output.h index 1cfe7568..6d71f9b6 100644 --- a/include/wlr/interfaces/wlr_output.h +++ b/include/wlr/interfaces/wlr_output.h @@ -28,8 +28,10 @@ struct wlr_output_impl { void wlr_output_init(struct wlr_output *output, struct wlr_backend *backend, const struct wlr_output_impl *impl); void wlr_output_free(struct wlr_output *output); -void wlr_output_update_size(struct wlr_output *output, int32_t width, - int32_t height); +void wlr_output_update_mode(struct wlr_output *output, + struct wlr_output_mode *mode); +void wlr_output_update_custom_mode(struct wlr_output *output, int32_t width, + int32_t height, int32_t refresh); struct wl_global *wlr_output_create_global(struct wlr_output *wlr_output, struct wl_display *display); void wlr_output_destroy_global(struct wlr_output *wlr_output); diff --git a/include/wlr/render/egl.h b/include/wlr/render/egl.h index 67a81f37..bdb8d286 100644 --- a/include/wlr/render/egl.h +++ b/include/wlr/render/egl.h @@ -22,7 +22,8 @@ struct wlr_egl { * Initializes an egl context for the given platform and remote display. * Will attempt to load all possibly required api functions. */ -bool wlr_egl_init(struct wlr_egl *egl, EGLenum platform, EGLint visual_id, void *display); +bool wlr_egl_init(struct wlr_egl *egl, EGLenum platform, void *remote_display, + EGLint *config_attribs, EGLint visual_id); /** * Frees all related egl resources, makes the context not-current and diff --git a/include/wlr/types/wlr_output.h b/include/wlr/types/wlr_output.h index 037fa515..a974a154 100644 --- a/include/wlr/types/wlr_output.h +++ b/include/wlr/types/wlr_output.h @@ -47,6 +47,7 @@ struct wlr_output { char serial[16]; float scale; int32_t width, height; + int32_t refresh; // mHz int32_t phys_width, phys_height; // mm enum wl_output_subpixel subpixel; enum wl_output_transform transform; |