diff --git a/qrenderdoc/Windows/MainWindow.cpp b/qrenderdoc/Windows/MainWindow.cpp index b619f3300..7dda93953 100644 --- a/qrenderdoc/Windows/MainWindow.cpp +++ b/qrenderdoc/Windows/MainWindow.cpp @@ -1635,18 +1635,28 @@ void MainWindow::messageCheck() } m_Ctx.Replay().AsyncInvoke([this](IReplayController *r) { - rdcarray msgs = r->GetDebugMessages(); + rdcarray msgs; bool disconnected = false; if(m_Ctx.Replay().CurrentRemote()) { - bool prev = m_Ctx.Replay().CurrentRemote()->serverRunning; + bool wasRunning = m_Ctx.Replay().CurrentRemote()->serverRunning; m_Ctx.Replay().PingRemote(); - if(prev != m_Ctx.Replay().CurrentRemote()->serverRunning) + if(wasRunning != m_Ctx.Replay().CurrentRemote()->serverRunning) + { + qCritical() << "Remote server disconnected"; disconnected = true; + } + + if(!disconnected && wasRunning) + msgs = r->GetDebugMessages(); + } + else + { + msgs = r->GetDebugMessages(); } GUIInvoke::call(this, [this, disconnected, msgs] { diff --git a/renderdoc/core/replay_proxy.cpp b/renderdoc/core/replay_proxy.cpp index 1e72e3ba8..4af065dd1 100644 --- a/renderdoc/core/replay_proxy.cpp +++ b/renderdoc/core/replay_proxy.cpp @@ -2519,6 +2519,7 @@ bool ReplayProxy::CheckError(ReplayProxyPacket receivedPacket, ReplayProxyPacket if(m_Writer.IsErrored() || m_Reader.IsErrored() || m_IsErrored) { RDCERR("Error during processing of %s", ToStr(expectedPacket).c_str()); + m_IsErrored = true; return true; } diff --git a/renderdoc/os/win32/win32_network.cpp b/renderdoc/os/win32/win32_network.cpp index 8371eb55e..622ca6990 100644 --- a/renderdoc/os/win32/win32_network.cpp +++ b/renderdoc/os/win32/win32_network.cpp @@ -39,6 +39,8 @@ static std::string wsaerr_string(int err) { switch(err) { + case WSAENOTSOCK: + return "WSAENOTSOCK: An operation was attempted on something that is not a socket"; case WSAEWOULDBLOCK: return "WSAEWOULDBLOCK: A non-blocking socket operation could not be completed immediately"; case WSAEADDRINUSE: