Revision edc1de97 qemu-thread-win32.c
b/qemu-thread-win32.c | ||
---|---|---|
215 | 215 |
if (data->mode == QEMU_THREAD_DETACHED) { |
216 | 216 |
g_free(data); |
217 | 217 |
data = NULL; |
218 |
} else { |
|
219 |
InitializeCriticalSection(&data->cs); |
|
220 | 218 |
} |
221 | 219 |
TlsSetValue(qemu_thread_tls_index, data); |
222 | 220 |
qemu_thread_exit(start_routine(thread_arg)); |
... | ... | |
227 | 225 |
{ |
228 | 226 |
QemuThreadData *data = TlsGetValue(qemu_thread_tls_index); |
229 | 227 |
if (data) { |
228 |
assert(data->mode != QEMU_THREAD_DETACHED); |
|
230 | 229 |
data->ret = arg; |
231 | 230 |
EnterCriticalSection(&data->cs); |
232 | 231 |
data->exited = true; |
... | ... | |
258 | 257 |
CloseHandle(handle); |
259 | 258 |
} |
260 | 259 |
ret = data->ret; |
260 |
assert(data->mode != QEMU_THREAD_DETACHED); |
|
261 | 261 |
DeleteCriticalSection(&data->cs); |
262 | 262 |
g_free(data); |
263 | 263 |
return ret; |
... | ... | |
288 | 288 |
data->mode = mode; |
289 | 289 |
data->exited = false; |
290 | 290 |
|
291 |
if (data->mode != QEMU_THREAD_DETACHED) { |
|
292 |
InitializeCriticalSection(&data->cs); |
|
293 |
} |
|
294 |
|
|
291 | 295 |
hThread = (HANDLE) _beginthreadex(NULL, 0, win32_start_routine, |
292 | 296 |
data, 0, &thread->tid); |
293 | 297 |
if (!hThread) { |
... | ... | |
314 | 318 |
return NULL; |
315 | 319 |
} |
316 | 320 |
|
321 |
assert(data->mode != QEMU_THREAD_DETACHED); |
|
317 | 322 |
EnterCriticalSection(&data->cs); |
318 | 323 |
if (!data->exited) { |
319 | 324 |
handle = OpenThread(SYNCHRONIZE | THREAD_SUSPEND_RESUME, FALSE, |
Also available in: Unified diff