aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authoremersion <contact@emersion.fr>2018-01-20 16:43:14 +0100
committeremersion <contact@emersion.fr>2018-01-20 16:43:14 +0100
commit4ca38b84ede12aed3c3b807521992b3580384f76 (patch)
tree67b2fac5e71bcc97af390fca94dbff3416b8f809 /include
parentbc001e90e988c965776abbd078224c14ac296047 (diff)
backend/drm: fix hardware cursors not moving
This adds back `wlr_output::needs_swap`. This allows a backend to request buffer swaps even if the output isn't damaged. This is needed by the DRM backend to trigger pageflips when the cursor moves.
Diffstat (limited to 'include')
-rw-r--r--include/rootston/output.h4
-rw-r--r--include/wlr/interfaces/wlr_output.h1
-rw-r--r--include/wlr/types/wlr_output.h3
3 files changed, 5 insertions, 3 deletions
diff --git a/include/rootston/output.h b/include/rootston/output.h
index a80e1f49..e8241de7 100644
--- a/include/rootston/output.h
+++ b/include/rootston/output.h
@@ -16,11 +16,11 @@ struct roots_output {
struct timespec last_frame;
pixman_region32_t damage, previous_damage;
- bool frame_scheduled;
+ bool frame_pending;
struct wl_listener frame;
struct wl_listener mode;
- struct wl_listener damage_listener;
+ struct wl_listener needs_swap;
};
void output_add_notify(struct wl_listener *listener, void *data);
diff --git a/include/wlr/interfaces/wlr_output.h b/include/wlr/interfaces/wlr_output.h
index d5837def..56404ec7 100644
--- a/include/wlr/interfaces/wlr_output.h
+++ b/include/wlr/interfaces/wlr_output.h
@@ -32,5 +32,6 @@ void wlr_output_update_mode(struct wlr_output *output,
void wlr_output_update_custom_mode(struct wlr_output *output, int32_t width,
int32_t height, int32_t refresh);
void wlr_output_update_enabled(struct wlr_output *output, bool enabled);
+void wlr_output_update_needs_swap(struct wlr_output *output);
#endif
diff --git a/include/wlr/types/wlr_output.h b/include/wlr/types/wlr_output.h
index 1091ee62..33d27501 100644
--- a/include/wlr/types/wlr_output.h
+++ b/include/wlr/types/wlr_output.h
@@ -54,6 +54,7 @@ struct wlr_output {
enum wl_output_subpixel subpixel;
enum wl_output_transform transform;
+ bool needs_swap;
pixman_region32_t damage, previous_damage;
float transform_matrix[16];
@@ -64,8 +65,8 @@ struct wlr_output {
int32_t refresh; // mHz
struct {
- struct wl_signal damage;
struct wl_signal frame;
+ struct wl_signal needs_swap;
struct wl_signal swap_buffers;
struct wl_signal enable;
struct wl_signal mode;