aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pugl/detail/implementation.c19
-rw-r--r--pugl/pugl.h7
-rw-r--r--test/pugl_cairo_test.c5
-rw-r--r--test/pugl_gl3_test.c6
-rw-r--r--test/pugl_test.c12
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;
}