Skip to content
This repository has been archived by the owner on Nov 1, 2021. It is now read-only.

Commit

Permalink
Misc bugfixes uncovered during testing
Browse files Browse the repository at this point in the history
  • Loading branch information
ddevault committed Jun 20, 2019
1 parent efb6c4d commit c564718
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 5 deletions.
3 changes: 2 additions & 1 deletion backend/backend.c
Expand Up @@ -92,7 +92,8 @@ static size_t parse_outputs_env(const char *name) {

static struct wlr_backend *attempt_wl_backend(struct wl_display *display,
wlr_renderer_create_func_t create_renderer_func) {
struct wlr_backend *backend = wlr_wl_backend_create(display, NULL, create_renderer_func);
struct wlr_backend *backend =
wlr_wl_backend_create_drm_leased(display, NULL, create_renderer_func);
if (backend == NULL) {
return NULL;
}
Expand Down
2 changes: 2 additions & 0 deletions backend/wayland/lease.c
Expand Up @@ -37,6 +37,8 @@ void submit_drm_lease(struct wlr_wl_backend *backend) {
zwp_drm_lease_request_v1_submit(backend->drm_lease_request);
zwp_drm_lease_v1_add_listener(backend->drm_lease,
&drm_lease_listener, backend);
wl_display_dispatch(backend->remote_display);
wl_display_roundtrip(backend->remote_display);
}

static void drm_lease_manager_handle_connector(void *data,
Expand Down
1 change: 1 addition & 0 deletions rootston/desktop.c
Expand Up @@ -281,6 +281,7 @@ static void handle_pointer_constraint(struct wl_listener *listener,

static void handle_drm_lease_requested(
struct wl_listener *listener, void *data) {
wlr_log(WLR_DEBUG, "DRM lease requested, granting");
struct wlr_drm_lease_request_v1 *req = data;
// We only offer leases we're prepared to grant
// Other compositors might want to e.g. show a prompt
Expand Down
16 changes: 12 additions & 4 deletions types/wlr_drm_lease_v1.c
Expand Up @@ -69,6 +69,7 @@ struct wlr_drm_lease_v1 *wlr_drm_lease_manager_v1_grant_lease_request(

struct wlr_drm_lease_v1 *lease = request->lease;
if (!drm_lease_request_v1_validate(request)) {
wlr_log(WLR_DEBUG, "Refusing invalid DRM lease request");
zwp_drm_lease_v1_send_finish(lease->resource);
return NULL;
}
Expand All @@ -85,6 +86,7 @@ struct wlr_drm_lease_v1 *wlr_drm_lease_manager_v1_grant_lease_request(
lease->fd = drmModeCreateLease(
manager->backend->fd, NULL, 0, 0, &lease->lessee_id);
if (lease->fd < 0) {
wlr_log_errno(WLR_ERROR, "drmModeCreateLease: ");
zwp_drm_lease_v1_send_finish(lease->resource);
return NULL;
}
Expand Down Expand Up @@ -177,15 +179,15 @@ static void drm_lease_request_v1_handle_request_connector(
return;
}

struct wlr_drm_connector_lease_v1 *lease =
struct wlr_drm_connector_lease_v1 *connector_lease =
calloc(1, sizeof(struct wlr_drm_connector_lease_v1));
if (!lease) {
if (!connector_lease) {
wl_client_post_no_memory(client);
return;
}

lease->connector = conn;
wl_list_insert(&request->connectors, &lease->link);
connector_lease->connector = conn;
wl_list_insert(&request->connectors, &connector_lease->link);
}

static void drm_lease_request_v1_handle_submit(
Expand Down Expand Up @@ -216,10 +218,15 @@ static void drm_lease_request_v1_handle_submit(
wl_resource_set_implementation(wl_resource, &lease_impl,
lease, drm_lease_v1_handle_resource_destroy);

wl_list_insert(&lease->manager->leases,
wl_resource_get_link(lease->resource));

if (!drm_lease_request_v1_validate(lease_request)) {
/* Pre-emptively reject invalid lease requests */
wlr_log(WLR_DEBUG, "Rejecting invalid lease request");
zwp_drm_lease_v1_send_finish(lease->resource);
} else {
wlr_log(WLR_DEBUG, "Sending lease request to compositor");
wlr_signal_emit_safe(
&lease_request->manager->events.lease_requested,
lease_request);
Expand Down Expand Up @@ -278,6 +285,7 @@ void drm_lease_manager_v1_handle_create_lease_request(
req, drm_lease_request_v1_handle_resource_destroy);

wl_list_insert(&manager->lease_requests, wl_resource_get_link(wl_resource));
wlr_log(WLR_DEBUG, "Client created DRM lease request");
}

static struct zwp_drm_lease_manager_v1_interface lease_manager_impl = {
Expand Down

0 comments on commit c564718

Please sign in to comment.