aboutsummaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
Diffstat (limited to 'backend')
-rw-r--r--backend/wayland/backend.c42
-rw-r--r--backend/wayland/output.c2
2 files changed, 23 insertions, 21 deletions
diff --git a/backend/wayland/backend.c b/backend/wayland/backend.c
index d917c7e9..3ac2ea7d 100644
--- a/backend/wayland/backend.c
+++ b/backend/wayland/backend.c
@@ -35,26 +35,7 @@ static bool wlr_wl_backend_start(struct wlr_backend *_backend) {
struct wlr_wl_backend *backend = (struct wlr_wl_backend *)_backend;
wlr_log(L_INFO, "Initializating wayland backend");
- backend->remote_display = wl_display_connect(NULL);
- if (!backend->remote_display) {
- wlr_log_errno(L_ERROR, "Could not connect to remote display");
- return false;
- }
-
- if (!(backend->registry = wl_display_get_registry(backend->remote_display))) {
- wlr_log_errno(L_ERROR, "Could not obtain reference to remote registry");
- return false;
- }
-
- wlr_wl_registry_poll(backend);
- if (!(backend->compositor) || (!(backend->shell))) {
- wlr_log_errno(L_ERROR, "Could not obtain retrieve required globals");
- return false;
- }
-
- wlr_egl_init(&backend->egl, EGL_PLATFORM_WAYLAND_EXT, backend->remote_display);
- wlr_egl_bind_display(&backend->egl, backend->local_display);
-
+ backend->started = true;
for (size_t i = 0; i < backend->requested_outputs; ++i) {
wlr_wl_output_create(&backend->backend);
}
@@ -146,6 +127,27 @@ struct wlr_backend *wlr_wl_backend_create(struct wl_display *display) {
}
backend->local_display = display;
+
+ backend->remote_display = wl_display_connect(NULL);
+ if (!backend->remote_display) {
+ wlr_log_errno(L_ERROR, "Could not connect to remote display");
+ return false;
+ }
+
+ if (!(backend->registry = wl_display_get_registry(backend->remote_display))) {
+ wlr_log_errno(L_ERROR, "Could not obtain reference to remote registry");
+ return false;
+ }
+
+ wlr_wl_registry_poll(backend);
+ if (!(backend->compositor) || (!(backend->shell))) {
+ wlr_log_errno(L_ERROR, "Could not obtain retrieve required globals");
+ return false;
+ }
+
+ wlr_egl_init(&backend->egl, EGL_PLATFORM_WAYLAND_EXT, backend->remote_display);
+ wlr_egl_bind_display(&backend->egl, backend->local_display);
+
return &backend->backend;
error:
diff --git a/backend/wayland/output.c b/backend/wayland/output.c
index 3e673bcc..ba04aede 100644
--- a/backend/wayland/output.c
+++ b/backend/wayland/output.c
@@ -209,7 +209,7 @@ static struct zxdg_toplevel_v6_listener xdg_toplevel_listener = {
struct wlr_output *wlr_wl_output_create(struct wlr_backend *_backend) {
assert(wlr_backend_is_wl(_backend));
struct wlr_wl_backend *backend = (struct wlr_wl_backend *)_backend;
- if (!backend->remote_display) {
+ if (!backend->started) {
++backend->requested_outputs;
return NULL;
}