diff options
| author | Nat Goodspeed <nat@lindenlab.com> | 2024-05-24 17:34:04 -0400 | 
|---|---|---|
| committer | Nat Goodspeed <nat@lindenlab.com> | 2024-05-24 17:34:04 -0400 | 
| commit | 71d777ea126e7f02cb46c11bdb606094ca06f75c (patch) | |
| tree | 795d79c321adb65682a6f104f9955df3d93dd3c5 /indra/newview/llfeaturemanager.cpp | |
| parent | f06f84aed26fa7ed294a14ed12dae58c063b0aa3 (diff) | |
Promote seh_catcher() et al. to llexception.{h,cpp} for general use.
Diffstat (limited to 'indra/newview/llfeaturemanager.cpp')
| -rw-r--r-- | indra/newview/llfeaturemanager.cpp | 36 | 
1 files changed, 4 insertions, 32 deletions
diff --git a/indra/newview/llfeaturemanager.cpp b/indra/newview/llfeaturemanager.cpp index 99139e6528..1f2ebd5092 100644 --- a/indra/newview/llfeaturemanager.cpp +++ b/indra/newview/llfeaturemanager.cpp @@ -40,6 +40,7 @@  #include "llappviewer.h"  #include "llbufferstream.h" +#include "llexception.h"  #include "llnotificationsutil.h"  #include "llviewercontrol.h"  #include "llworld.h" @@ -377,33 +378,6 @@ bool LLFeatureManager::parseFeatureTable(std::string filename)  F32 gpu_benchmark(); -#if LL_WINDOWS - -F32 logExceptionBenchmark() -{ -    // FIXME: gpu_benchmark uses many C++ classes on the stack to control state. -    //  SEH exceptions with our current exception handling options do not call -    //  destructors for these classes, resulting in an undefined state should -    //  this handler be invoked. -    F32 gbps = -1; -    __try -    { -        gbps = gpu_benchmark(); -    } -    __except (msc_exception_filter(GetExceptionCode(), GetExceptionInformation())) -    { -        // HACK - ensure that profiling is disabled -        LLGLSLShader::finishProfile(false); - -        // convert to C++ styled exception -        char integer_string[32]; -        sprintf(integer_string, "SEH, code: %lu\n", GetExceptionCode()); -        throw std::exception(integer_string); -    } -    return gbps; -} -#endif -  bool LLFeatureManager::loadGPUClass()  {      if (!gSavedSettings.getBOOL("SkipBenchmark")) @@ -413,14 +387,12 @@ bool LLFeatureManager::loadGPUClass()          F32 gbps;          try          { -#if LL_WINDOWS -            gbps = logExceptionBenchmark(); -#else -            gbps = gpu_benchmark(); -#endif +            gbps = seh_catcher(gpu_benchmark);          }          catch (const std::exception& e)          { +            // HACK - ensure that profiling is disabled +            LLGLSLShader::finishProfile(false);              gbps = -1.f;              LL_WARNS("RenderInit") << "GPU benchmark failed: " << e.what() << LL_ENDL;          }  | 
