Add API function to unload breakpad crash handler

This commit is contained in:
baldurk
2014-10-22 18:44:27 +01:00
parent 1a6f6b7084
commit 61cc49163b
4 changed files with 20 additions and 5 deletions
+3
View File
@@ -271,3 +271,6 @@ typedef void (RENDERDOC_CC *pRENDERDOC_SetCaptureKeys)(KeyButton *keys, int num)
extern "C" RENDERDOC_API void RENDERDOC_CC RENDERDOC_InitRemoteAccess(uint32_t *ident);
typedef void (RENDERDOC_CC *pRENDERDOC_InitRemoteAccess)(uint32_t *ident);
extern "C" RENDERDOC_API void RENDERDOC_CC RENDERDOC_UnloadCrashHandler();
typedef void (RENDERDOC_CC *pRENDERDOC_UnloadCrashHandler)();
+10 -5
View File
@@ -119,8 +119,7 @@ RenderDoc &RenderDoc::Inst()
void RenderDoc::RecreateCrashHandler()
{
if(m_ExHandler)
m_ExHandler->UnregisterMemoryRegion(this);
UnloadCrashHandler();
#ifdef CRASH_HANDLER_ENABLED
m_ExHandler = new CrashHandler(m_ExHandler);
@@ -130,6 +129,14 @@ void RenderDoc::RecreateCrashHandler()
m_ExHandler->RegisterMemoryRegion(this, sizeof(RenderDoc));
}
void RenderDoc::UnloadCrashHandler()
{
if(m_ExHandler)
m_ExHandler->UnregisterMemoryRegion(this);
SAFE_DELETE(m_ExHandler);
}
RenderDoc::RenderDoc()
{
m_LogFile = L"";
@@ -240,9 +247,7 @@ RenderDoc::~RenderDoc()
{
if(m_ExHandler)
{
m_ExHandler->UnregisterMemoryRegion(this);
SAFE_DELETE(m_ExHandler);
UnloadCrashHandler();
}
for(size_t i=0; i < m_Captures.size(); i++)
+1
View File
@@ -179,6 +179,7 @@ class RenderDoc
const CaptureOptions &GetCaptureOptions() const { return m_Options; }
void RecreateCrashHandler();
void UnloadCrashHandler();
ICrashHandler *GetCrashHandler() const { return m_ExHandler; }
Serialiser *OpenWriteSerialiser(uint32_t frameNum, RDCInitParams *params, void *thpixels, size_t thlen, uint32_t thwidth, uint32_t thheight);
+6
View File
@@ -153,6 +153,12 @@ void RENDERDOC_CC RENDERDOC_TriggerExceptionHandler(void *exceptionPtrs, bool32
}
}
extern "C" RENDERDOC_API
void RENDERDOC_CC RENDERDOC_UnloadCrashHandler()
{
RenderDoc::Inst().UnloadCrashHandler();
}
extern "C" RENDERDOC_API
bool32 RENDERDOC_CC RENDERDOC_SupportLocalReplay(const wchar_t *logfile, rdctype::wstr *driver)
{