diff options
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/source/app/svapp.cxx | 10 | ||||
-rw-r--r-- | vcl/source/app/svmain.cxx | 74 | ||||
-rw-r--r-- | vcl/workben/outdevgrind.cxx | 9 |
3 files changed, 46 insertions, 47 deletions
diff --git a/vcl/source/app/svapp.cxx b/vcl/source/app/svapp.cxx index 1374a7a6d9bf..be670e0a9160 100644 --- a/vcl/source/app/svapp.cxx +++ b/vcl/source/app/svapp.cxx @@ -279,17 +279,17 @@ OUString Application::GetAppFileName() return aAppFileName; } -void Application::Exception( sal_uInt16 nError ) +void Application::Exception( ExceptionCategory nCategory ) { - switch ( nError & EXCEPTION_MAJORTYPE ) + switch ( nCategory ) { // System has precedence (so do nothing) - case EXCEPTION_SYSTEM: - case EXCEPTION_DISPLAY: + case ExceptionCategory::System: + case ExceptionCategory::UserInterface: break; #ifdef DBG_UTIL - case EXCEPTION_RESOURCENOTLOADED: + case ExceptionCategory::ResourceNotLoaded: Abort("Resource not loaded"); break; default: diff --git a/vcl/source/app/svmain.cxx b/vcl/source/app/svmain.cxx index 39e62315c24b..2b315b2606d0 100644 --- a/vcl/source/app/svmain.cxx +++ b/vcl/source/app/svmain.cxx @@ -102,52 +102,50 @@ oslSignalAction SAL_CALL VCLExceptionSignal_impl( void* /*pData*/, oslSignalInfo static volatile bool bIn = false; // if we crash again, bail out immediately - if ( !bIn ) - { - sal_uInt16 nVCLException = 0; + if ( bIn ) + return osl_Signal_ActCallNextHdl; - // UAE - if ( (pInfo->Signal == osl_Signal_AccessViolation) || - (pInfo->Signal == osl_Signal_IntegerDivideByZero) || - (pInfo->Signal == osl_Signal_FloatDivideByZero) || - (pInfo->Signal == osl_Signal_DebugBreak) ) - { - nVCLException = EXCEPTION_SYSTEM; + ExceptionCategory nVCLException = ExceptionCategory::NONE; + + // UAE + if ( (pInfo->Signal == osl_Signal_AccessViolation) || + (pInfo->Signal == osl_Signal_IntegerDivideByZero) || + (pInfo->Signal == osl_Signal_FloatDivideByZero) || + (pInfo->Signal == osl_Signal_DebugBreak) ) + { + nVCLException = ExceptionCategory::System; #if HAVE_FEATURE_OPENGL - if (OpenGLZone::isInZone()) - OpenGLZone::hardDisable(); + if (OpenGLZone::isInZone()) + OpenGLZone::hardDisable(); #endif - } + } + + // RC + if ((pInfo->Signal == osl_Signal_User) && + (pInfo->UserSignal == OSL_SIGNAL_USER_RESOURCEFAILURE) ) + nVCLException = ExceptionCategory::ResourceNotLoaded; - // RC - if ((pInfo->Signal == osl_Signal_User) && - (pInfo->UserSignal == OSL_SIGNAL_USER_RESOURCEFAILURE) ) - nVCLException = EXCEPTION_RESOURCENOTLOADED; + // DISPLAY-Unix + if ((pInfo->Signal == osl_Signal_User) && + (pInfo->UserSignal == OSL_SIGNAL_USER_X11SUBSYSTEMERROR) ) + nVCLException = ExceptionCategory::UserInterface; + + if ( nVCLException != ExceptionCategory::NONE ) + { + bIn = true; - // DISPLAY-Unix - if ((pInfo->Signal == osl_Signal_User) && - (pInfo->UserSignal == OSL_SIGNAL_USER_X11SUBSYSTEMERROR) ) - nVCLException = EXCEPTION_DISPLAY; + SolarMutexGuard aLock; - if ( nVCLException ) + // do not stop timer because otherwise the UAE-Box will not be painted as well + ImplSVData* pSVData = ImplGetSVData(); + if ( pSVData->mpApp ) { - bIn = true; - - SolarMutexGuard aLock; - - // do not stop timer because otherwise the UAE-Box will not be painted as well - ImplSVData* pSVData = ImplGetSVData(); - if ( pSVData->mpApp ) - { - SystemWindowFlags nOldMode = Application::GetSystemWindowMode(); - Application::SetSystemWindowMode( nOldMode & ~SystemWindowFlags::NOAUTOMODE ); - pSVData->mpApp->Exception( nVCLException ); - Application::SetSystemWindowMode( nOldMode ); - } - bIn = false; - - return osl_Signal_ActCallNextHdl; + SystemWindowFlags nOldMode = Application::GetSystemWindowMode(); + Application::SetSystemWindowMode( nOldMode & ~SystemWindowFlags::NOAUTOMODE ); + pSVData->mpApp->Exception( nVCLException ); + Application::SetSystemWindowMode( nOldMode ); } + bIn = false; } return osl_Signal_ActCallNextHdl; diff --git a/vcl/workben/outdevgrind.cxx b/vcl/workben/outdevgrind.cxx index 11b312533705..e6ff4f48cbff 100644 --- a/vcl/workben/outdevgrind.cxx +++ b/vcl/workben/outdevgrind.cxx @@ -57,7 +57,7 @@ class GrindApp : public Application { public: virtual int Main() override; - virtual void Exception( sal_uInt16 nError ) override; + virtual void Exception( ExceptionCategory nCategory ) override; }; class TestWindow : public Dialog @@ -669,13 +669,14 @@ void TestWindow::Paint(vcl::RenderContext& rRenderContext, const Rectangle&) fflush(stdout); } -void GrindApp::Exception( sal_uInt16 nError ) +void GrindApp::Exception( ExceptionCategory nCategory ) { - switch( nError & EXCEPTION_MAJORTYPE ) + switch( nCategory ) { - case EXCEPTION_RESOURCENOTLOADED: + case ExceptionCategory::ResourceNotLoaded: Abort( "Error: could not load language resources.\nPlease check your installation.\n" ); break; + default: break; } } |