diff options
author | David Robillard <d@drobilla.net> | 2019-11-03 21:13:40 +0100 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2019-11-09 12:15:17 +0100 |
commit | b5f04656a4b3d1b43a66585ead8ef55536a4fdbc (patch) | |
tree | efc8765b6e7a5c670735205593a7daed38bce83b | |
parent | be838db18af13390cb9f705d36ab83396d2dd1e6 (diff) | |
download | pugl-b5f04656a4b3d1b43a66585ead8ef55536a4fdbc.tar.gz pugl-b5f04656a4b3d1b43a66585ead8ef55536a4fdbc.tar.bz2 pugl-b5f04656a4b3d1b43a66585ead8ef55536a4fdbc.zip |
Add puglStrerror() and improve test program error reporting
-rw-r--r-- | pugl/detail/implementation.c | 19 | ||||
-rw-r--r-- | pugl/pugl.h | 7 | ||||
-rw-r--r-- | test/pugl_cairo_test.c | 5 | ||||
-rw-r--r-- | test/pugl_gl3_test.c | 6 | ||||
-rw-r--r-- | test/pugl_test.c | 12 |
5 files changed, 41 insertions, 8 deletions
diff --git a/pugl/detail/implementation.c b/pugl/detail/implementation.c index 80a7a32..a2ff2ec 100644 --- a/pugl/detail/implementation.c +++ b/pugl/detail/implementation.c @@ -25,6 +25,25 @@ #include <stdlib.h> #include <string.h> +const char* +puglStrerror(const PuglStatus status) +{ + switch (status) { + case PUGL_SUCCESS: return "Success"; + case PUGL_FAILURE: return "Non-fatal failure"; + case PUGL_UNKNOWN_ERROR: return "Unknown system error"; + case PUGL_BAD_BACKEND: return "Invalid or missing backend"; + case PUGL_BACKEND_FAILED: return "Backend initialisation failed"; + case PUGL_REGISTRATION_FAILED: return "Window class registration failed"; + case PUGL_CREATE_WINDOW_FAILED: return "Window creation failed"; + case PUGL_SET_FORMAT_FAILED: return "Failed to set pixel format"; + case PUGL_CREATE_CONTEXT_FAILED: return "Failed to create drawing context"; + case PUGL_UNSUPPORTED_TYPE: return "Unsupported data type"; + } + + return "Unknown error"; +} + void puglSetString(char** dest, const char* string) { diff --git a/pugl/pugl.h b/pugl/pugl.h index f08925f..0232d86 100644 --- a/pugl/pugl.h +++ b/pugl/pugl.h @@ -410,6 +410,13 @@ typedef union { } PuglEvent; /** + Return a string describing a status code. +*/ +PUGL_API +const char* +puglStrerror(PuglStatus status); + +/** @anchor world @name World The top level context of a Pugl application. diff --git a/test/pugl_cairo_test.c b/test/pugl_cairo_test.c index 1aa291a..1ce9edd 100644 --- a/test/pugl_cairo_test.c +++ b/test/pugl_cairo_test.c @@ -228,7 +228,10 @@ main(int argc, char** argv) puglSetViewHint(view, PUGL_IGNORE_KEY_REPEAT, opts.ignoreKeyRepeat); puglSetEventFunc(view, onEvent); - if (puglCreateWindow(view, "Pugl Test")) { + PuglStatus st = puglCreateWindow(view, "Pugl Test"); + if (st) { + fprintf(stderr, "error: Failed to create window (%s)\n", + puglStrerror(st)); return 1; } diff --git a/test/pugl_gl3_test.c b/test/pugl_gl3_test.c index 8228336..21db4b2 100644 --- a/test/pugl_gl3_test.c +++ b/test/pugl_gl3_test.c @@ -313,8 +313,10 @@ main(int argc, char** argv) puglSetHandle(app.view, &app); puglSetEventFunc(app.view, onEvent); - if (puglCreateWindow(app.view, "Pugl OpenGL 3")) { - fprintf(stderr, "error: Failed to create window\n"); + const PuglStatus st = puglCreateWindow(app.view, "Pugl OpenGL 3"); + if (st) { + fprintf(stderr, "error: Failed to create window (%s)\n", + puglStrerror(st)); return 1; } diff --git a/test/pugl_test.c b/test/pugl_test.c index 7033d45..6558bf6 100644 --- a/test/pugl_test.c +++ b/test/pugl_test.c @@ -323,10 +323,12 @@ main(int argc, char** argv) puglSetHandle(app.parent, &app); puglSetEventFunc(app.parent, onParentEvent); + PuglStatus st = PUGL_SUCCESS; const uint8_t title[] = { 'P', 'u', 'g', 'l', ' ', 'P', 'r', 0xC3, 0xBC, 'f', 'u', 'n', 'g', 0 }; - if (puglCreateWindow(app.parent, (const char*)title)) { - fprintf(stderr, "error: Failed to create parent window\n"); + if ((st = puglCreateWindow(app.parent, (const char*)title))) { + fprintf(stderr, "error: Failed to create parent window (%s)\n", + puglStrerror(st)); return 1; } @@ -341,9 +343,9 @@ main(int argc, char** argv) puglSetHandle(app.child, &app); puglSetEventFunc(app.child, onEvent); - const int st = puglCreateWindow(app.child, NULL); - if (st) { - fprintf(stderr, "error: Failed to create child window (%d)\n", st); + if ((st = puglCreateWindow(app.child, NULL))) { + fprintf(stderr, "error: Failed to create child window (%s)\n", + puglStrerror(st)); return 1; } |