MCPcopy Create free account
hub / github.com/baldurk/renderdoc / TargetControlClientThread

Method TargetControlClientThread

renderdoc/core/target_control.cpp:119–431  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

117#define READ_DATA_SCOPE() ReadSerialiser &ser = reader;
118
119void RenderDoc::TargetControlClientThread(uint32_t version, Network::Socket *client)
120{
121 Threading::SetCurrentThreadName("TargetControlClientThread");
122
123 Threading::KeepModuleAlive();
124
125 WriteSerialiser writer(new StreamWriter(client, Ownership::Nothing), Ownership::Stream);
126 ReadSerialiser reader(new StreamReader(client, Ownership::Nothing), Ownership::Stream);
127
128 writer.SetStreamingMode(true);
129 reader.SetStreamingMode(true);
130
131 rdcstr target = RenderDoc::Inst().GetCurrentTarget();
132 uint32_t mypid = Process::GetCurrentPID();
133
134 {
135 WRITE_DATA_SCOPE();
136 SCOPED_SERIALISE_CHUNK(ePacket_Handshake);
137 SERIALISE_ELEMENT(TargetControlProtocolVersion);
138 SERIALISE_ELEMENT(target);
139 SERIALISE_ELEMENT(mypid);
140 }
141
142 if(writer.IsErrored())
143 {
144 SAFE_DELETE(client);
145
146 {
147 SCOPED_LOCK(RenderDoc::Inst().m_SingleClientLock);
148 RenderDoc::Inst().m_SingleClientName = "";
149 }
150
151 Threading::ReleaseModuleExitThread();
152 return;
153 }
154
155 float captureProgress = -1.0f;
156 RenderDoc::Inst().SetProgressCallback<CaptureProgress>(
157 [&captureProgress](float p) { captureProgress = p; });
158
159 const int pingtime = 1000; // ping every 1000ms
160 const int ticktime = 10; // tick every 10ms
161 const int progresstime = 100; // update capture progress every 100ms
162 int curtime = 0;
163
164 RenderDoc::Inst().ValidateCaptures();
165
166 rdcarray<CaptureData> captures;
167 rdcarray<rdcpair<uint32_t, uint32_t> > children;
168 std::map<RDCDriver, RDCDriverStatus> drivers;
169 float prevCaptureProgress = captureProgress;
170 uint32_t prevWindows = 0;
171
172 while(client)
173 {
174 if(RenderDoc::Inst().m_ControlClientThreadShutdown || !client->Connected())
175 {
176 SAFE_DELETE(client);

Callers

nothing calls this directly

Calls 15

SetCurrentThreadNameFunction · 0.85
GetCurrentPIDFunction · 0.85
SetStreamingModeMethod · 0.80
ValidateCapturesMethod · 0.80
GetActiveDriversMethod · 0.80
GetCapturesMethod · 0.80
GetChildProcessesMethod · 0.80
OpenFileMethod · 0.80
AtEndMethod · 0.80
GetReaderMethod · 0.80

Tested by

no test coverage detected