mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-05 17:40:39 +00:00
Ensure that proxy driver gets properly shut down
This commit is contained in:
@@ -267,8 +267,6 @@ struct RemoteRenderer
|
||||
|
||||
m_RemoteDrivers.reserve(m.size());
|
||||
for(auto it=m.begin(); it != m.end(); ++it) m_RemoteDrivers.push_back(*it);
|
||||
|
||||
m_ProxyDriver = NULL;
|
||||
}
|
||||
~RemoteRenderer()
|
||||
{
|
||||
@@ -322,7 +320,7 @@ struct RemoteRenderer
|
||||
if(progress == NULL)
|
||||
progress = &dummy;
|
||||
|
||||
RDCDriver proxydriver = m_Proxies[proxyid].first;
|
||||
RDCDriver proxydrivertype = m_Proxies[proxyid].first;
|
||||
|
||||
Serialiser ser(L"", Serialiser::WRITING, false);
|
||||
|
||||
@@ -354,21 +352,23 @@ struct RemoteRenderer
|
||||
|
||||
RDCLOG("Log ready on replay host");
|
||||
|
||||
m_ProxyDriver = NULL;
|
||||
auto status = RenderDoc::Inst().CreateReplayDriver(proxydriver, NULL, &m_ProxyDriver);
|
||||
IReplayDriver *proxyDriver = NULL;
|
||||
auto status = RenderDoc::Inst().CreateReplayDriver(proxydrivertype, NULL, &proxyDriver);
|
||||
|
||||
if(status != eReplayCreate_Success || !m_ProxyDriver)
|
||||
if(status != eReplayCreate_Success || !proxyDriver)
|
||||
{
|
||||
if(proxyDriver) proxyDriver->Shutdown();
|
||||
return status;
|
||||
}
|
||||
|
||||
ReplayRenderer *ret = new ReplayRenderer();
|
||||
|
||||
ProxySerialiser *proxy = new ProxySerialiser(m_Socket, m_ProxyDriver);
|
||||
ProxySerialiser *proxy = new ProxySerialiser(m_Socket, proxyDriver);
|
||||
status = ret->SetDevice(proxy);
|
||||
|
||||
if(status != eReplayCreate_Success)
|
||||
{
|
||||
SAFE_DELETE(ret);
|
||||
SAFE_DELETE(proxy);
|
||||
return status;
|
||||
}
|
||||
|
||||
@@ -396,8 +396,6 @@ struct RemoteRenderer
|
||||
if(ser) *ser = new Serialiser(payload.size(), &payload[0], false);
|
||||
}
|
||||
|
||||
IReplayDriver *m_ProxyDriver;
|
||||
|
||||
vector< pair<RDCDriver, wstring> > m_Proxies;
|
||||
vector< pair<RDCDriver, wstring> > m_RemoteDrivers;
|
||||
};
|
||||
|
||||
@@ -666,6 +666,9 @@ ProxySerialiser::~ProxySerialiser()
|
||||
SAFE_DELETE(m_FromReplaySerialiser);
|
||||
SAFE_DELETE(m_ToReplaySerialiser);
|
||||
|
||||
if(m_Proxy) m_Proxy->Shutdown();
|
||||
m_Proxy = NULL;
|
||||
|
||||
for(auto it=m_ShaderReflectionCache.begin(); it != m_ShaderReflectionCache.end(); ++it)
|
||||
delete it->second;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user