From 422037ce2808d9db060f27beb3fbc81d725cffaa Mon Sep 17 00:00:00 2001 From: Christophe Geuzaine <cgeuzaine@ulg.ac.be> Date: Thu, 29 May 2014 14:34:04 +0000 Subject: [PATCH] set custom fltk error handlers --- Fltk/FlGui.cpp | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/Fltk/FlGui.cpp b/Fltk/FlGui.cpp index 465734911f..a5a7cf804e 100644 --- a/Fltk/FlGui.cpp +++ b/Fltk/FlGui.cpp @@ -198,9 +198,39 @@ static void gamepad_handler(void *data) } } +static void error_handler(const char *fmt, ...) +{ + char str[5000]; + va_list args; + va_start(args, fmt); + vsnprintf(str, sizeof(str), fmt, args); + va_end(args); + if(!strcmp(str, "Insufficient GL support")){ // this should be fatal + CTX::instance()->terminal = 1; + Msg::Error("%s (FLTK internal error)", str); + Msg::Fatal("Your system does not seem to support OpenGL - aborting"); + } + else{ + Msg::Error("%s (FLTK internal error)", str); + } +} + +static void fatal_error_handler(const char *fmt, ...) +{ + char str[5000]; + va_list args; + va_start(args, fmt); + vsnprintf(str, sizeof(str), fmt, args); + va_end(args); + CTX::instance()->terminal = 1; + Msg::Fatal("%s (FLTK internal error)", str); +} FlGui::FlGui(int argc, char **argv) { + Fl::error = error_handler; + Fl::fatal = fatal_error_handler; + // set X display if(CTX::instance()->display.size()) Fl::display(CTX::instance()->display.c_str()); -- GitLab