0030775: Foundation Classes - Preserve application-defined top-level exception filter
authorkgv <kgv@opencascade.com>
Mon, 17 Jun 2019 15:42:36 +0000 (18:42 +0300)
committerabv <abv@opencascade.com>
Sat, 14 Sep 2019 08:45:34 +0000 (11:45 +0300)
commit44b80414d3ec94cf5d7438a8a51bcb72ac8379b1
treed6a868b07c333a97b6481cffa7f6b979f4c7b9c2
parentb1492cb30fcac293dcedabecb914a8a9db0fe536
0030775: Foundation Classes - Preserve application-defined top-level exception filter

New overload for method OSD::SetSignal() is added accepting argument specifying how to set or unset handlers.
New enum OSD_SignalMode describes different modes of signal handlers setting used in extended version of OSD::SetSignal().
Method OSD::SignalMode() returns mode set by the last call to SetSignal().
Method OSD::IsFloatingSignalSet() is changed to return value based on actual floating point exception flags (rather than on variable set by previous call to SetSignal()).

Added new method OSD::SetThreadLocalSignal() intended to setup thread-specific handlers (e.g. _set_se_translator() on Windows) and FPE settings.
OSD_ThreadPool and Media_PlayerContext now use new method instead of OSD::SetSignal(), to avoid overriding global handlers.

dsetsignal syntax has been extended to support choice of signal handling mode.

DRAW command OCC30775 is added allowing to test signal handling in multithreaded process.
src/Draw/Draw_BasicCommands.cxx
src/Media/Media_PlayerContext.cxx
src/OSD/FILES
src/OSD/OSD.hxx
src/OSD/OSD_SignalMode.hxx [new file with mode: 0644]
src/OSD/OSD_ThreadPool.cxx
src/OSD/OSD_signal.cxx
src/QABugs/QABugs_11.cxx
tests/bugs/fclasses/bug30775 [new file with mode: 0644]