From 5a6a200432b8fb2c72484c736d70c3f9035ed52a Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 2 Aug 2016 17:23:10 +0200 Subject: [PATCH] Fetch packets outside of replay proxy, so we can serve other commands --- renderdoc/core/remote_server.cpp | 13 ++++++++++++- renderdoc/core/replay_proxy.cpp | 11 +++-------- renderdoc/core/replay_proxy.h | 2 +- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/renderdoc/core/remote_server.cpp b/renderdoc/core/remote_server.cpp index b3ce36c95..3c0c4677c 100644 --- a/renderdoc/core/remote_server.cpp +++ b/renderdoc/core/remote_server.cpp @@ -308,8 +308,19 @@ void RenderDoc::BecomeRemoteServer(const char *listenhost, uint16_t port, volati while(client) { - if(!proxy->Tick() || killReplay) + int packet; + Serialiser *data = NULL; + + if(!RecvPacket(client, packet, &data)) { + SAFE_DELETE(data); + SAFE_DELETE(client); + break; + } + + if(!proxy->Tick(packet, data) || killReplay) + { + SAFE_DELETE(data); SAFE_DELETE(client); } } diff --git a/renderdoc/core/replay_proxy.cpp b/renderdoc/core/replay_proxy.cpp index 9b7ad80b3..89084adb7 100644 --- a/renderdoc/core/replay_proxy.cpp +++ b/renderdoc/core/replay_proxy.cpp @@ -1745,7 +1745,7 @@ void ProxySerialiser::EnsureBufCached(ResourceId bufid) } } -bool ProxySerialiser::Tick() +bool ProxySerialiser::Tick(int type, Serialiser *incomingPacket) { if(!m_RemoteServer) return true; @@ -1753,10 +1753,7 @@ bool ProxySerialiser::Tick() if(!m_Socket) return false; - ReplayProxyPacket type; - - if(!RecvPacket(m_Socket, type, &m_ToReplaySerialiser)) - return false; + m_ToReplaySerialiser = incomingPacket; m_FromReplaySerialiser->Rewind(); @@ -1842,11 +1839,9 @@ bool ProxySerialiser::Tick() DebugThread(0, dummy1, dummy2); break; } - default: RDCERR("Unexpected command"); break; + default: RDCERR("Unexpected command"); return false; } - SAFE_DELETE(m_ToReplaySerialiser); - if(!SendPacket(m_Socket, type, *m_FromReplaySerialiser)) return false; diff --git a/renderdoc/core/replay_proxy.h b/renderdoc/core/replay_proxy.h index 9910ce85b..2d6762e05 100644 --- a/renderdoc/core/replay_proxy.h +++ b/renderdoc/core/replay_proxy.h @@ -341,7 +341,7 @@ public: return ResourceId(); } - bool Tick(); + bool Tick(int type, Serialiser *incomingPacket); vector GetBuffers(); FetchBuffer GetBuffer(ResourceId id);