----- Original Message ----- > From: José Fonseca <jfons...@vmware.com> > > At least on MSVC we statically link against the CRT, so we must disable > the CRT message boxes if we want to attended testing.
oops: "to attended" -> "unattended" Jose > > The messages are convenient when running manually, so let them be if the > system error message boxes are not disabled. > --- > src/gallium/auxiliary/util/u_debug.c | 32 > +++++++++++++++++++++++++++++ > src/gallium/auxiliary/util/u_debug.h | 9 ++++++++ > src/gallium/state_trackers/wgl/stw_device.c | 2 ++ > 3 files changed, 43 insertions(+) > > diff --git a/src/gallium/auxiliary/util/u_debug.c > b/src/gallium/auxiliary/util/u_debug.c > index dc840e8..d79f31e 100644 > --- a/src/gallium/auxiliary/util/u_debug.c > +++ b/src/gallium/auxiliary/util/u_debug.c > @@ -46,6 +46,12 @@ > #include <limits.h> /* CHAR_BIT */ > #include <ctype.h> /* isalnum */ > > +#ifdef _WIN32 > +#include <windows.h> > +#include <stdlib.h> > +#endif > + > + > void _debug_vprintf(const char *format, va_list ap) > { > static char buf[4096] = {'\0'}; > @@ -64,6 +70,32 @@ void _debug_vprintf(const char *format, va_list ap) > } > > > +void > +debug_disable_error_message_boxes(void) > +{ > +#ifdef _WIN32 > + /* When Windows' error message boxes are disabled for this process (as is > + * typically the case when running tests in an automated fashion) we > disable > + * CRT message boxes too. > + */ > + UINT uMode = SetErrorMode(0); > + SetErrorMode(uMode); > + if (uMode & SEM_FAILCRITICALERRORS) { > + /* Disable assertion failure message box. > + * http://msdn.microsoft.com/en-us/library/sas1dkb2.aspx > + */ > + _set_error_mode(_OUT_TO_STDERR); > +#ifdef _MSC_VER > + /* Disable abort message box. > + * http://msdn.microsoft.com/en-us/library/e631wekh.aspx > + */ > + _set_abort_behavior(0, _WRITE_ABORT_MSG | _CALL_REPORTFAULT); > +#endif > + } > +#endif /* _WIN32 */ > +} > + > + > #ifdef DEBUG > void debug_print_blob( const char *name, > const void *blob, > diff --git a/src/gallium/auxiliary/util/u_debug.h > b/src/gallium/auxiliary/util/u_debug.h > index 9c41421..badd5e2 100644 > --- a/src/gallium/auxiliary/util/u_debug.h > +++ b/src/gallium/auxiliary/util/u_debug.h > @@ -139,6 +139,15 @@ void debug_print_format(const char *msg, unsigned fmt ); > > > /** > + * Disable interactive error message boxes. > + * > + * Should be called as soon as possible for effectiveness. > + */ > +void > +debug_disable_error_message_boxes(void); > + > + > +/** > * Hard-coded breakpoint. > */ > #ifdef DEBUG > diff --git a/src/gallium/state_trackers/wgl/stw_device.c > b/src/gallium/state_trackers/wgl/stw_device.c > index 8f2cf9c..025dbdc 100644 > --- a/src/gallium/state_trackers/wgl/stw_device.c > +++ b/src/gallium/state_trackers/wgl/stw_device.c > @@ -69,6 +69,8 @@ stw_init(const struct stw_winsys *stw_winsys) > static struct stw_device stw_dev_storage; > struct pipe_screen *screen; > > + debug_disable_error_message_boxes(); > + > debug_printf("%s\n", __FUNCTION__); > > assert(!stw_dev); > -- > 1.9.1 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev