From c63102d06d09f8a9d4044fd107fbda2034bb30c6 Mon Sep 17 00:00:00 2001 From: jtsiomb Date: Sat, 7 Mar 2015 18:53:54 +0000 Subject: [PATCH] added the init error handler example program contributed by Chris Marshall Not building it as part of the demos yet, since it was submitted quite late in the 3.0 release process git-svn-id: https://svn.code.sf.net/p/freeglut/code/trunk@1750 7f0cb862-5218-0410-a997-914c9d46530a --- .gitattributes | 1 + .../demos/init_error_func/init_error_func.c | 58 +++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 freeglut/freeglut/progs/demos/init_error_func/init_error_func.c diff --git a/.gitattributes b/.gitattributes index 61d425b..6e6f370 100644 --- a/.gitattributes +++ b/.gitattributes @@ -43,6 +43,7 @@ freeglut/freeglut/progs/demos/One/objects.ico -text freeglut/freeglut/progs/demos/One/one.c svn_keywords=Author+Date+Id+Revision freeglut/freeglut/progs/demos/One/one.rc -text freeglut/freeglut/progs/demos/Resizer/Resizer.cpp -text +freeglut/freeglut/progs/demos/init_error_func/init_error_func.c -text freeglut/freeglut/progs/demos/multi-touch/multi-touch.c -text freeglut/freeglut/progs/demos/shapes/glmatrix.c -text freeglut/freeglut/progs/demos/shapes/glmatrix.h -text diff --git a/freeglut/freeglut/progs/demos/init_error_func/init_error_func.c b/freeglut/freeglut/progs/demos/init_error_func/init_error_func.c new file mode 100644 index 0000000..de5cf28 --- /dev/null +++ b/freeglut/freeglut/progs/demos/init_error_func/init_error_func.c @@ -0,0 +1,58 @@ +/* + * ------------------------------------------ + * user_error_handler.c + * + * This is a sample program showing a basic + * user defined error handlers with FreeGLUT + * ------------------------------------------ + */ + +#include + +/* + * ------------------------------------------ + * Declare our own Error handler for FreeGLUT + * ------------------------------------------ + */ + +/* This declares the vprintf() routine */ +#include + +/* This declares the va_list type */ +#include + +/* The new handler looks like a vprintf prototype */ +void myError (const char *fmt, va_list ap) +{ + fprintf(stderr, "myError: Entering user defined error handler\n"); + + /* print warning message */ + fprintf(stderr, "myError:"); + vfprintf(stderr, fmt, ap); + fprintf(stderr, "\n"); + + /* deInitialize the freeglut state */ + fprintf(stderr, "myError: Calling glutExit()\n"); + glutExit(); + + /* terminate error handler appropriately */ + fprintf(stderr, "myError: Exit-ing handler routine\n"); + + exit(1); +} + +/* + * ------------------------------------------ + * Just enough code to create the error to + * demonstrate the user defined handler + * ------------------------------------------ + */ +int main(int argc, char** argv) +{ + glutInitErrorFunc(&myError); + glutCreateWindow ("error test"); /* This is an error! */ + glutInit(&argc, argv); /* Should be called + after glutInit() */ + glutMainLoop(); + return 0; +}