diff options
Diffstat (limited to 'src/common/backend.c')
| -rw-r--r-- | src/common/backend.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/common/backend.c b/src/common/backend.c index c8d2caf..cab1dce 100644 --- a/src/common/backend.c +++ b/src/common/backend.c @@ -184,16 +184,17 @@ void yasl_surface_destroy(struct yasl_surface *s) struct yasl_display *yasl_surface_display(const struct yasl_surface *s) { - if (!s || !s->display->ops->surface_display) - return 0; - return s->display->ops->surface_display(s); + return s ? s->display : NULL; } void yasl_surface_set_callbacks(struct yasl_surface *s, const struct yasl_surface_cbs *cbs, void *ud) { - if (!s || !s->display->ops->surface_set_callbacks) + if (!s) return; - s->display->ops->surface_set_callbacks(s, cbs, ud); + s->callbacks = cbs ? *cbs : (struct yasl_surface_cbs){0}; + s->ud = ud; + if (s->display && s->display->ops && s->display->ops->surface_set_callbacks) + s->display->ops->surface_set_callbacks(s, cbs, ud); } void yasl_surface_set_title(struct yasl_surface *s, const char *title) @@ -250,9 +251,13 @@ bool yasl_surface_input_poll(struct yasl_surface *s, struct yasl_input_event *ev struct yasl_geometry yasl_surface_geometry(const struct yasl_surface *s) { - if (!s || !s->display->ops->surface_geometry) + if (!s) return (struct yasl_geometry){.scale_120 = YASL_SCALE_UNIT}; - return s->display->ops->surface_geometry(s); + if (s->scale_120) + return (struct yasl_geometry){s->size, s->scale_120}; + if (s->display && s->display->ops && s->display->ops->surface_geometry) + return s->display->ops->surface_geometry(s); + return (struct yasl_geometry){s->size, YASL_SCALE_UNIT}; } uint32_t yasl_surface_state(const struct yasl_surface *s) |
