Mesa (master): winsys/radeon: fix killing the CS thread

Christian König deathsimple at kemper.freedesktop.org
Sun Sep 22 11:25:16 UTC 2013


Module: Mesa
Branch: master
Commit: f7ccb84aa1cd64703308dece03da0d4eb3bf4951
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f7ccb84aa1cd64703308dece03da0d4eb3bf4951

Author: Christian König <christian.koenig at amd.com>
Date:   Sat Sep 21 13:21:47 2013 +0200

winsys/radeon: fix killing the CS thread

Kill the thread only after we checked that it's not used any more, not before.

Signed-off-by: Christian König <christian.koenig at amd.com>
Reviewed-by: Marek Olšák <marek.olsak at amd.com>

---

 src/gallium/winsys/radeon/drm/radeon_drm_winsys.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c
index 69c42a0..0a3b932 100644
--- a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c
+++ b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c
@@ -421,6 +421,10 @@ static void radeon_winsys_destroy(struct radeon_winsys *rws)
 {
     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);
@@ -429,10 +433,6 @@ static void radeon_winsys_destroy(struct radeon_winsys *rws)
     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);




More information about the mesa-commit mailing list