From 1d3dd7fc08f22f2e82cb812ced822369e984d845 Mon Sep 17 00:00:00 2001 From: Simon Zeni Date: Thu, 30 Sep 2021 10:53:18 -0400 Subject: [PATCH] backend: remove noop backend --- backend/backend.c | 17 -------- backend/meson.build | 1 - backend/noop/backend.c | 79 ---------------------------------- backend/noop/meson.build | 4 -- backend/noop/output.c | 87 -------------------------------------- docs/env_vars.md | 2 +- include/backend/noop.h | 27 ------------ include/wlr/backend/noop.h | 31 -------------- 8 files changed, 1 insertion(+), 247 deletions(-) delete mode 100644 backend/noop/backend.c delete mode 100644 backend/noop/meson.build delete mode 100644 backend/noop/output.c delete mode 100644 include/backend/noop.h delete mode 100644 include/wlr/backend/noop.h diff --git a/backend/backend.c b/backend/backend.c index 7f0de3c2..33a21851 100644 --- a/backend/backend.c +++ b/backend/backend.c @@ -9,7 +9,6 @@ #include #include #include -#include #include #include #include @@ -203,20 +202,6 @@ static struct wlr_backend *attempt_headless_backend( return backend; } -static struct wlr_backend *attempt_noop_backend(struct wl_display *display) { - struct wlr_backend *backend = wlr_noop_backend_create(display); - if (backend == NULL) { - return NULL; - } - - size_t outputs = parse_outputs_env("WLR_NOOP_OUTPUTS"); - for (size_t i = 0; i < outputs; ++i) { - wlr_noop_add_output(backend); - } - - return backend; -} - #if WLR_HAS_DRM_BACKEND static struct wlr_backend *attempt_drm_backend(struct wl_display *display, struct wlr_backend *backend, struct wlr_session *session) { @@ -269,8 +254,6 @@ static bool attempt_backend_by_name(struct wl_display *display, #endif } else if (strcmp(name, "headless") == 0) { backend = attempt_headless_backend(display); - } else if (strcmp(name, "noop") == 0) { - backend = attempt_noop_backend(display); } else if (strcmp(name, "drm") == 0 || strcmp(name, "libinput") == 0) { // DRM and libinput need a session if (multi->session == NULL) { diff --git a/backend/meson.build b/backend/meson.build index 7fffc839..71a00dc9 100644 --- a/backend/meson.build +++ b/backend/meson.build @@ -16,7 +16,6 @@ endforeach subdir('multi') subdir('wayland') -subdir('noop') subdir('headless') subdir('session') diff --git a/backend/noop/backend.c b/backend/noop/backend.c deleted file mode 100644 index 7bdda051..00000000 --- a/backend/noop/backend.c +++ /dev/null @@ -1,79 +0,0 @@ -#include -#include -#include -#include -#include "backend/noop.h" -#include "util/signal.h" - -struct wlr_noop_backend *noop_backend_from_backend( - struct wlr_backend *wlr_backend) { - assert(wlr_backend_is_noop(wlr_backend)); - return (struct wlr_noop_backend *)wlr_backend; -} - -static bool backend_start(struct wlr_backend *wlr_backend) { - struct wlr_noop_backend *backend = noop_backend_from_backend(wlr_backend); - wlr_log(WLR_INFO, "Starting noop backend"); - - struct wlr_noop_output *output; - wl_list_for_each(output, &backend->outputs, link) { - wlr_output_update_enabled(&output->wlr_output, true); - wlr_signal_emit_safe(&backend->backend.events.new_output, - &output->wlr_output); - } - - backend->started = true; - return true; -} - -static void backend_destroy(struct wlr_backend *wlr_backend) { - struct wlr_noop_backend *backend = noop_backend_from_backend(wlr_backend); - if (!wlr_backend) { - return; - } - - struct wlr_noop_output *output, *output_tmp; - wl_list_for_each_safe(output, output_tmp, &backend->outputs, link) { - wlr_output_destroy(&output->wlr_output); - } - - wlr_backend_finish(wlr_backend); - - wl_list_remove(&backend->display_destroy.link); - - free(backend); -} - -static const struct wlr_backend_impl backend_impl = { - .start = backend_start, - .destroy = backend_destroy, -}; - -static void handle_display_destroy(struct wl_listener *listener, void *data) { - struct wlr_noop_backend *noop = - wl_container_of(listener, noop, display_destroy); - backend_destroy(&noop->backend); -} - -struct wlr_backend *wlr_noop_backend_create(struct wl_display *display) { - wlr_log(WLR_INFO, "Creating noop backend"); - - struct wlr_noop_backend *backend = - calloc(1, sizeof(struct wlr_noop_backend)); - if (!backend) { - wlr_log(WLR_ERROR, "Failed to allocate wlr_noop_backend"); - return NULL; - } - wlr_backend_init(&backend->backend, &backend_impl); - backend->display = display; - wl_list_init(&backend->outputs); - - backend->display_destroy.notify = handle_display_destroy; - wl_display_add_destroy_listener(display, &backend->display_destroy); - - return &backend->backend; -} - -bool wlr_backend_is_noop(struct wlr_backend *backend) { - return backend->impl == &backend_impl; -} diff --git a/backend/noop/meson.build b/backend/noop/meson.build deleted file mode 100644 index 950c0716..00000000 --- a/backend/noop/meson.build +++ /dev/null @@ -1,4 +0,0 @@ -wlr_files += files( - 'backend.c', - 'output.c', -) diff --git a/backend/noop/output.c b/backend/noop/output.c deleted file mode 100644 index bde80820..00000000 --- a/backend/noop/output.c +++ /dev/null @@ -1,87 +0,0 @@ -#include -#include -#include -#include -#include -#include "backend/noop.h" -#include "util/signal.h" - -static const uint32_t SUPPORTED_OUTPUT_STATE = - WLR_OUTPUT_STATE_BACKEND_OPTIONAL | - WLR_OUTPUT_STATE_MODE; - -static struct wlr_noop_output *noop_output_from_output( - struct wlr_output *wlr_output) { - assert(wlr_output_is_noop(wlr_output)); - return (struct wlr_noop_output *)wlr_output; -} - -static bool output_commit(struct wlr_output *wlr_output) { - uint32_t unsupported = - wlr_output->pending.committed & ~SUPPORTED_OUTPUT_STATE; - if (unsupported != 0) { - wlr_log(WLR_DEBUG, "Unsupported output state fields: 0x%"PRIx32, - unsupported); - return false; - } - - if (wlr_output->pending.committed & WLR_OUTPUT_STATE_MODE) { - assert(wlr_output->pending.mode_type == WLR_OUTPUT_STATE_MODE_CUSTOM); - wlr_output_update_custom_mode(wlr_output, - wlr_output->pending.custom_mode.width, - wlr_output->pending.custom_mode.height, - wlr_output->pending.custom_mode.refresh); - } - - if (wlr_output->pending.committed & WLR_OUTPUT_STATE_BUFFER) { - return false; - } - - return true; -} - -static void output_destroy(struct wlr_output *wlr_output) { - struct wlr_noop_output *output = - noop_output_from_output(wlr_output); - - wl_list_remove(&output->link); - - free(output); -} - -static const struct wlr_output_impl output_impl = { - .destroy = output_destroy, - .commit = output_commit, -}; - -bool wlr_output_is_noop(struct wlr_output *wlr_output) { - return wlr_output->impl == &output_impl; -} - -struct wlr_output *wlr_noop_add_output(struct wlr_backend *wlr_backend) { - struct wlr_noop_backend *backend = noop_backend_from_backend(wlr_backend); - - struct wlr_noop_output *output = calloc(1, sizeof(struct wlr_noop_output)); - if (output == NULL) { - wlr_log(WLR_ERROR, "Failed to allocate wlr_noop_output"); - return NULL; - } - output->backend = backend; - wlr_output_init(&output->wlr_output, &backend->backend, &output_impl, - backend->display); - struct wlr_output *wlr_output = &output->wlr_output; - - strncpy(wlr_output->make, "noop", sizeof(wlr_output->make)); - strncpy(wlr_output->model, "noop", sizeof(wlr_output->model)); - snprintf(wlr_output->name, sizeof(wlr_output->name), "NOOP-%zd", - ++backend->last_output_num); - - wl_list_insert(&backend->outputs, &output->link); - - if (backend->started) { - wlr_output_update_enabled(wlr_output, true); - wlr_signal_emit_safe(&backend->backend.events.new_output, wlr_output); - } - - return wlr_output; -} diff --git a/docs/env_vars.md b/docs/env_vars.md index a07b2f19..609ca97b 100644 --- a/docs/env_vars.md +++ b/docs/env_vars.md @@ -3,7 +3,7 @@ wlroots reads these environment variables # wlroots specific * *WLR_BACKENDS*: comma-separated list of backends to use (available backends: - libinput, drm, wayland, x11, headless, noop) + libinput, drm, wayland, x11, headless) * *WLR_NO_HARDWARE_CURSORS*: set to 1 to use software cursors instead of hardware cursors * *WLR_XWAYLAND*: specifies the path to an Xwayland binary to be used (instead diff --git a/include/backend/noop.h b/include/backend/noop.h deleted file mode 100644 index 5a8ee677..00000000 --- a/include/backend/noop.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef BACKEND_NOOP_H -#define BACKEND_NOOP_H - -#include -#include - -struct wlr_noop_backend { - struct wlr_backend backend; - struct wl_display *display; - struct wl_list outputs; - size_t last_output_num; - bool started; - - struct wl_listener display_destroy; -}; - -struct wlr_noop_output { - struct wlr_output wlr_output; - - struct wlr_noop_backend *backend; - struct wl_list link; -}; - -struct wlr_noop_backend *noop_backend_from_backend( - struct wlr_backend *wlr_backend); - -#endif diff --git a/include/wlr/backend/noop.h b/include/wlr/backend/noop.h deleted file mode 100644 index 592b8f35..00000000 --- a/include/wlr/backend/noop.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This an unstable interface of wlroots. No guarantees are made regarding the - * future consistency of this API. - */ -#ifndef WLR_USE_UNSTABLE -#error "Add -DWLR_USE_UNSTABLE to enable unstable wlroots features" -#endif - -#ifndef WLR_BACKEND_NOOP_H -#define WLR_BACKEND_NOOP_H - -#include -#include - -/** - * Creates a noop backend. Noop backends do not have a framebuffer and are not - * capable of rendering anything. They are useful for when there's no real - * outputs connected; you can stash your views on a noop output until an output - * is connected. - */ -struct wlr_backend *wlr_noop_backend_create(struct wl_display *display); - -/** - * Create a new noop output. - */ -struct wlr_output *wlr_noop_add_output(struct wlr_backend *backend); - -bool wlr_backend_is_noop(struct wlr_backend *backend); -bool wlr_output_is_noop(struct wlr_output *output); - -#endif