Merge branch 'type-safe-backends' into 'master'

Draft: backend/multi: improve type-safety by exposing wlr_multi_backend

See merge request wlroots/wlroots!4034
This commit is contained in:
Simon Ser 2023-06-28 08:04:50 +00:00
commit 5770f66d01
6 changed files with 50 additions and 46 deletions

View file

@ -7,7 +7,7 @@
* Helper to create new DRM sub-backends on GPU hotplug.
*/
struct wlr_drm_backend_monitor {
struct wlr_backend *multi;
struct wlr_multi_backend *multi;
struct wlr_backend *primary_drm;
struct wlr_session *session;
@ -18,7 +18,7 @@ struct wlr_drm_backend_monitor {
};
struct wlr_drm_backend_monitor *drm_backend_monitor_create(
struct wlr_backend *multi, struct wlr_backend *primary_drm,
struct wlr_multi_backend *multi, struct wlr_backend *primary_drm,
struct wlr_session *session);
#endif

View file

@ -11,25 +11,31 @@
#include <wlr/backend.h>
struct wlr_multi_backend;
/**
* Creates a multi-backend. Multi-backends wrap an arbitrary number of backends
* and aggregate their new_output/new_input signals.
*/
struct wlr_backend *wlr_multi_backend_create(struct wl_display *display);
struct wlr_multi_backend *wlr_multi_backend_create(struct wl_display *display);
/**
* Adds the given backend to the multi backend. This should be done before the
* new backend is started.
*/
bool wlr_multi_backend_add(struct wlr_backend *multi,
bool wlr_multi_backend_add(struct wlr_multi_backend *multi,
struct wlr_backend *backend);
void wlr_multi_backend_remove(struct wlr_backend *multi,
void wlr_multi_backend_remove(struct wlr_multi_backend *multi,
struct wlr_backend *backend);
bool wlr_backend_is_multi(struct wlr_backend *backend);
bool wlr_multi_is_empty(struct wlr_backend *backend);
bool wlr_multi_backend_is_empty(struct wlr_multi_backend *backend);
void wlr_multi_for_each_backend(struct wlr_backend *backend,
void wlr_multi_backend_for_each(struct wlr_multi_backend *backend,
void (*callback)(struct wlr_backend *backend, void *data), void *data);
struct wlr_multi_backend *wlr_multi_backend_try_from(struct wlr_backend *backend);
struct wlr_backend *wlr_multi_backend_base(struct wlr_multi_backend *backend);
#endif