diff options
author | Daniel Silverstone <dsilvers@digital-scurf.org> | 2020-02-24 10:56:37 +0000 |
---|---|---|
committer | Daniel Silverstone <dsilvers@digital-scurf.org> | 2020-02-24 10:56:37 +0000 |
commit | 1440a3a8cb8b44c4d762758c20b1fc31653ff187 (patch) | |
tree | bbb77846ca367fa71b4dcd0730441eb87cd54a27 | |
parent | 84fb99890ff127c763efc5014633b8e3a4c762b4 (diff) | |
download | libnsfb-1440a3a8cb8b44c4d762758c20b1fc31653ff187.tar.gz libnsfb-1440a3a8cb8b44c4d762758c20b1fc31653ff187.tar.bz2 |
surface: Add basic surface enumerator
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
-rw-r--r-- | include/libnsfb.h | 15 | ||||
-rw-r--r-- | src/surface/surface.c | 11 |
2 files changed, 26 insertions, 0 deletions
diff --git a/include/libnsfb.h b/include/libnsfb.h index dfb720c..d52d821 100644 --- a/include/libnsfb.h +++ b/include/libnsfb.h @@ -58,6 +58,21 @@ enum nsfb_format_e { NSFB_FMT_I1, /* black and white */ }; +/** Callback for surface enumeration + * + * @param The context you gave for the enumeration + * @param The name of a surface registered with libnsfb + * @param The type of that surface for use with ::nsfb_new + */ +typedef void (*surface_enumeration_cb)(void *, const char *, enum nsfb_type_e); + +/** Enumerate surface types registered with libnsfb + * + * @param cb The callback to call with each surface + * @param context The context to pass to the enumeration callback + */ +void nsfb_enumerate_surface_types(surface_enumeration_cb cb, void *context); + /** Select frontend type from a name. * * @param name The name to select a frontend. diff --git a/src/surface/surface.c b/src/surface/surface.c index f3127bd..426efa9 100644 --- a/src/surface/surface.c +++ b/src/surface/surface.c @@ -151,6 +151,17 @@ nsfb_type_from_name(const char *name) return NSFB_SURFACE_NONE; } +/* exported interface defined in libnsfb.h */ +void +nsfb_enumerate_surface_types(surface_enumeration_cb cb, void *context) +{ + int fend_loop; + + for (fend_loop = 0; fend_loop < surface_count; fend_loop++) { + cb(context, surfaces[fend_loop].name, surfaces[fend_loop].type); + } +} + /* * Local variables: * c-basic-offset: 4 |