Revert "Allow leasing desktop displays"

This reverts commit 505b1edb98.

Fixes: #553

Tested-by: @columna1
This commit is contained in:
Consolatis 2022-12-29 01:45:34 +01:00
parent 63632cfd1a
commit b770b4b433
3 changed files with 17 additions and 38 deletions

View file

@ -309,8 +309,6 @@ struct output {
struct wl_listener destroy; struct wl_listener destroy;
struct wl_listener frame; struct wl_listener frame;
bool leased;
}; };
#undef LAB_NR_LAYERS #undef LAB_NR_LAYERS

View file

@ -67,22 +67,16 @@ new_output_notify(struct wl_listener *listener, void *data)
struct wlr_output *wlr_output = data; struct wlr_output *wlr_output = data;
/* /*
* We offer any display as available for lease, some apps like * If this is a non-desktop output, offer it for leasing.
* gamescope, want to take ownership of a display when they can * We may want to do more logic here in future, if we choose
* to use planes and present directly. * to offer non-desktop outputs.
* This is also useful for debugging the DRM parts of
* another compositor.
*/
if (server->drm_lease_manager) {
wlr_drm_lease_v1_manager_offer_output(
server->drm_lease_manager, wlr_output);
}
/*
* Don't configure any non-desktop displays, such as VR headsets;
*/ */
if (wlr_output->non_desktop) { if (wlr_output->non_desktop) {
wlr_log(WLR_DEBUG, "Not configuring non-desktop output"); wlr_log(WLR_DEBUG, "Not configuring non-desktop output");
if (server->drm_lease_manager) {
wlr_drm_lease_v1_manager_offer_output(
server->drm_lease_manager, wlr_output);
}
return; return;
} }
@ -260,12 +254,11 @@ output_config_apply(struct server *server,
wl_list_for_each(head, &config->heads, link) { wl_list_for_each(head, &config->heads, link) {
struct wlr_output *o = head->state.output; struct wlr_output *o = head->state.output;
struct output *output = output_from_wlr_output(server, o); struct output *output = output_from_wlr_output(server, o);
bool output_enabled = head->state.enabled && !output->leased; bool need_to_add = head->state.enabled && !o->enabled;
bool need_to_add = output_enabled && !o->enabled; bool need_to_remove = !head->state.enabled && o->enabled;
bool need_to_remove = !output_enabled && o->enabled;
wlr_output_enable(o, output_enabled); wlr_output_enable(o, head->state.enabled);
if (output_enabled) { if (head->state.enabled) {
/* Output specifc actions only */ /* Output specifc actions only */
if (head->state.mode) { if (head->state.mode) {
wlr_output_set_mode(o, head->state.mode); wlr_output_set_mode(o, head->state.mode);
@ -292,7 +285,7 @@ output_config_apply(struct server *server,
assert(output->scene_output); assert(output->scene_output);
} }
if (output_enabled) { if (head->state.enabled) {
wlr_output_layout_move(server->output_layout, o, wlr_output_layout_move(server->output_layout, o,
head->state.x, head->state.y); head->state.x, head->state.y);
} }

View file

@ -125,28 +125,16 @@ handle_input_disinhibit(struct wl_listener *listener, void *data)
static void static void
handle_drm_lease_request(struct wl_listener *listener, void *data) handle_drm_lease_request(struct wl_listener *listener, void *data)
{ {
/*
* We only offer non-desktop outputs, but in the future we might want to do
* more logic here.
*/
struct wlr_drm_lease_request_v1 *req = data; struct wlr_drm_lease_request_v1 *req = data;
struct wlr_drm_lease_v1 *lease = wlr_drm_lease_request_v1_grant(req); struct wlr_drm_lease_v1 *lease = wlr_drm_lease_request_v1_grant(req);
if (!lease) { if (!lease) {
wlr_log(WLR_ERROR, "Failed to grant lease request"); wlr_log(WLR_ERROR, "Failed to grant lease request");
wlr_drm_lease_request_v1_reject(req); wlr_drm_lease_request_v1_reject(req);
return;
}
for (size_t i = 0; i < req->n_connectors; ++i) {
struct output *output = req->connectors[i]->output->data;
if (!output) {
continue;
}
wlr_output_enable(output->wlr_output, false);
wlr_output_commit(output->wlr_output);
wlr_output_layout_remove(output->server->output_layout,
output->wlr_output);
output->scene_output = NULL;
output->leased = true;
} }
} }