diff options
author | emersion <contact@emersion.fr> | 2018-10-29 20:38:57 +0100 |
---|---|---|
committer | emersion <contact@emersion.fr> | 2018-10-29 20:38:57 +0100 |
commit | 68362b37a890916d4c98aaee9d29497951c28c67 (patch) | |
tree | df29768b645bbeb8b843eca8ab926aa6b920abb0 /include/wlr/interfaces | |
parent | 659d39baaaa51e27c3e078390e3f1b588f390aa3 (diff) |
backend/drm: fix frame scheduling on secondary GPUs
There was a missing copy_drm_surface_mgpu call in drm_connector_schedule_frame
so we asked for a pageflip with an unknown BO, resulting in ENOENT.
Additionally, this commit makes schedule_frame return a bool indicating
failures. This allows schedule_frame_handle_idle_timer to only set
frame_pending to true if a frame has been successfully scheduled. Thus, if a
pageflip fails, rendering won't be blocked forever anymore.
In case a pageflip is already pending, true is returned because a frame has
already been scheduled and will be sent sometime soon.
Diffstat (limited to 'include/wlr/interfaces')
-rw-r--r-- | include/wlr/interfaces/wlr_output.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/include/wlr/interfaces/wlr_output.h b/include/wlr/interfaces/wlr_output.h index da37cba1..f7ffe3b4 100644 --- a/include/wlr/interfaces/wlr_output.h +++ b/include/wlr/interfaces/wlr_output.h @@ -33,7 +33,7 @@ struct wlr_output_impl { size_t (*get_gamma_size)(struct wlr_output *output); bool (*export_dmabuf)(struct wlr_output *output, struct wlr_dmabuf_attributes *attribs); - void (*schedule_frame)(struct wlr_output *output); + bool (*schedule_frame)(struct wlr_output *output); }; void wlr_output_init(struct wlr_output *output, struct wlr_backend *backend, |