diff options
Diffstat (limited to 'backend')
-rw-r--r-- | backend/wayland/backend.c | 42 | ||||
-rw-r--r-- | backend/wayland/output.c | 2 |
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; } |