Kill the thread only after we checked that it's not used any more, not before.
Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
{
struct radeon_drm_winsys *ws = (struct radeon_drm_winsys*)rws;
+ if (!pipe_reference(&ws->base.reference, NULL)) {
+ return;
+ }
+
if (ws->thread) {
ws->kill_thread = 1;
pipe_semaphore_signal(&ws->cs_queued);
pipe_semaphore_destroy(&ws->cs_queued);
pipe_condvar_destroy(ws->cs_queue_empty);
- if (!pipe_reference(&ws->base.reference, NULL)) {
- return;
- }
-
pipe_mutex_destroy(ws->hyperz_owner_mutex);
pipe_mutex_destroy(ws->cmask_owner_mutex);
pipe_mutex_destroy(ws->cs_stack_lock);