diff options
Diffstat (limited to 'test/bezier.c')
-rw-r--r-- | test/bezier.c | 55 |
1 files changed, 45 insertions, 10 deletions
diff --git a/test/bezier.c b/test/bezier.c index d686349..630c4a8 100644 --- a/test/bezier.c +++ b/test/bezier.c @@ -13,8 +13,12 @@ int main(int argc, char **argv) { + const char *fename; + enum nsfb_type_e fetype; nsfb_t *nsfb; nsfb_event_t event; + int waitloop = 3; + nsfb_bbox_t box; nsfb_bbox_t box2; uint8_t *fbptr; @@ -24,25 +28,35 @@ int main(int argc, char **argv) int loop; nsfb_plot_pen_t pen; - UNUSED(argc); - UNUSED(argv); + if (argc < 2) { + fename="sdl"; + } else { + fename = argv[1]; + } - nsfb = nsfb_init(NSFB_FRONTEND_SDL); - if (nsfb == NULL) { - fprintf(stderr, "Unable to initialise nsfb with SDL frontend\n"); + fetype = nsfb_type_from_name(fename); + if (fetype == NSFB_SURFACE_NONE) { + fprintf(stderr, "Unable to convert \"%s\" to nsfb surface type\n", fename); return 1; } - if (nsfb_init_frontend(nsfb) == -1) { - fprintf(stderr, "Unable to initialise nsfb frontend\n"); + nsfb = nsfb_new(fetype); + if (nsfb == NULL) { + fprintf(stderr, "Unable to allocate \"%s\" nsfb surface\n", fename); return 2; } + if (nsfb_init(nsfb) == -1) { + fprintf(stderr, "Unable to initialise nsfb surface\n"); + nsfb_free(nsfb); + return 4; + } + /* get the geometry of the whole screen */ box.x0 = box.y0 = 0; nsfb_get_geometry(nsfb, &box.x1, &box.y1, NULL); - nsfb_get_framebuffer(nsfb, &fbptr, &fbstride); + nsfb_get_buffer(nsfb, &fbptr, &fbstride); /* claim the whole screen for update */ nsfb_claim(nsfb, &box); @@ -115,8 +129,29 @@ int main(int argc, char **argv) nsfb_update(nsfb, &box); - while (event.type != NSFB_EVENT_CONTROL) - nsfb_event(nsfb, &event, -1); + /* wait for quit event or timeout */ + while (waitloop > 0) { + if (nsfb_event(nsfb, &event, 1000) == false) { + break; + } + if (event.type == NSFB_EVENT_CONTROL) { + if (event.value.controlcode == NSFB_CONTROL_TIMEOUT) { + /* timeout */ + waitloop--; + } else if (event.value.controlcode == NSFB_CONTROL_QUIT) { + break; + } + } + } + + nsfb_free(nsfb); return 0; } + +/* + * Local variables: + * c-basic-offset: 4 + * tab-width: 8 + * End: + */ |