autocreate backend returns null instead of empty

This commit is contained in:
Tony Crisci 2017-12-21 08:33:34 -05:00
parent d1dce19253
commit b4159c52d5
1 changed files with 8 additions and 10 deletions

View File

@ -96,16 +96,14 @@ struct wlr_backend *wlr_backend_autocreate(struct wl_display *display) {
struct wlr_session *session = wlr_session_create(display);
if (!session) {
wlr_log(L_ERROR, "Failed to start a DRM session");
return backend;
goto out;
}
struct wlr_backend *libinput = wlr_libinput_backend_create(display, session);
if (!libinput) {
goto error_multi;
if (libinput) {
wlr_multi_backend_add(backend, libinput);
}
wlr_multi_backend_add(backend, libinput);
int gpus[8];
size_t num_gpus = wlr_session_find_gpus(session, 8, gpus);
struct wlr_backend *primary_drm = NULL;
@ -128,14 +126,14 @@ struct wlr_backend *wlr_backend_autocreate(struct wl_display *display) {
if (!primary_drm) {
wlr_log(L_ERROR, "Failed to open any DRM device");
goto error_multi;
}
return backend;
out:
if (wlr_multi_is_empty(backend)) {
wlr_backend_destroy(backend);
return NULL;
}
error_multi:
wlr_backend_destroy(backend);
wlr_session_destroy(session);
return backend;
}