aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authoremersion <contact@emersion.fr>2018-10-29 20:38:57 +0100
committeremersion <contact@emersion.fr>2018-10-29 20:38:57 +0100
commit68362b37a890916d4c98aaee9d29497951c28c67 (patch)
treedf29768b645bbeb8b843eca8ab926aa6b920abb0 /include
parent659d39baaaa51e27c3e078390e3f1b588f390aa3 (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')
-rw-r--r--include/wlr/interfaces/wlr_output.h2
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,