summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/r300/r300_screen.c
diff options
context:
space:
mode:
authorChristian König <[email protected]>2013-09-25 13:59:56 +0200
committerChristian König <[email protected]>2013-09-25 19:41:31 +0200
commit4871128e58402385dc6f920884273c003a1124e1 (patch)
tree90abea06f7ff8f5b8a0b519de6f1d8e53dfea023 /src/gallium/drivers/r300/r300_screen.c
parentf6e2aa0e12e4ce91dc6f8ac5140d6e1f511ea468 (diff)
radeon/winsys: keep screen pointer in winsys v2
Only create one screen for each winsys instance. This helps with buffer sharing and interop handling. v2: rebased and some minor cleanup Signed-off-by: Christian König <[email protected]> Reviewed-by: Marek Olšák <[email protected]>
Diffstat (limited to 'src/gallium/drivers/r300/r300_screen.c')
-rw-r--r--src/gallium/drivers/r300/r300_screen.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/gallium/drivers/r300/r300_screen.c b/src/gallium/drivers/r300/r300_screen.c
index 063bc0922a1..125a1b59520 100644
--- a/src/gallium/drivers/r300/r300_screen.c
+++ b/src/gallium/drivers/r300/r300_screen.c
@@ -540,6 +540,9 @@ static void r300_destroy_screen(struct pipe_screen* pscreen)
struct r300_screen* r300screen = r300_screen(pscreen);
struct radeon_winsys *rws = radeon_winsys(pscreen);
+ if (rws && !radeon_winsys_unref(rws))
+ return;
+
pipe_mutex_destroy(r300screen->cmask_mutex);
if (rws)