summaryrefslogtreecommitdiff
path: root/src/common/backend.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/backend.c')
-rw-r--r--src/common/backend.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/common/backend.c b/src/common/backend.c
index 3f2143d..d35d243 100644
--- a/src/common/backend.c
+++ b/src/common/backend.c
@@ -306,15 +306,30 @@ bool yasl_surface_present(struct yasl_surface *s, const struct yasl_framebuffer
return s->display->ops->surface_present(s, fb, &clipped);
}
-bool yasl_surface_input_poll(struct yasl_surface *s, struct yasl_input_event *ev)
+bool yasl_surface_poll_event(struct yasl_surface *s, struct yasl_event *ev)
{
if (!s || !ev)
return false;
- if (s->display && s->display->ops && s->display->ops->surface_input_poll)
- return s->display->ops->surface_input_poll(s, ev);
+ if (s->display && s->display->ops && s->display->ops->surface_poll_event)
+ return s->display->ops->surface_poll_event(s, ev);
return input_queue_pop(&s->input, ev);
}
+bool yasl_surface_set_pointer_mode(struct yasl_surface *s, enum yasl_pointer_mode mode)
+{
+ if (!s || (mode != YASL_POINTER_NORMAL && mode != YASL_POINTER_RELATIVE))
+ return false;
+ if (mode == s->pointer_mode)
+ return true;
+ const struct yasl_backend_ops *ops = s->display ? s->display->ops : NULL;
+ if (!ops || !ops->surface_set_pointer_mode)
+ return mode == YASL_POINTER_NORMAL;
+ if (!ops->surface_set_pointer_mode(s, mode))
+ return false;
+ s->pointer_mode = mode;
+ return true;
+}
+
struct yasl_geometry yasl_surface_geometry(const struct yasl_surface *s)
{
if (!s)