diff options
author | Axel Davy <axel.davy@ens.fr> | 2015-01-11 17:51:59 +0100 |
---|---|---|
committer | Axel Davy <axel.davy@ens.fr> | 2015-02-06 00:07:19 +0100 |
commit | 8b3a9d5c9f54a0c1b1e95cc61214fd69c6777680 (patch) | |
tree | 667be01dc4d6edcc53803355185c093d07d26c94 /src/gallium/targets | |
parent | 8f50614910c40366d94964fe2c5da5772aff2f96 (diff) | |
download | external_mesa3d-8b3a9d5c9f54a0c1b1e95cc61214fd69c6777680.zip external_mesa3d-8b3a9d5c9f54a0c1b1e95cc61214fd69c6777680.tar.gz external_mesa3d-8b3a9d5c9f54a0c1b1e95cc61214fd69c6777680.tar.bz2 |
gallium/targets/d3dadapter9: Release the pipe_screen at destruction.
We weren't releasing hal and ref, causing some issues (threads not released, etc)
Reviewed-by: Tiziano Bacocco <tizbac2@gmail.com>
Signed-off-by: Axel Davy <axel.davy@ens.fr>
Diffstat (limited to 'src/gallium/targets')
-rw-r--r-- | src/gallium/targets/d3dadapter9/drm.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/gallium/targets/d3dadapter9/drm.c b/src/gallium/targets/d3dadapter9/drm.c index bdc402f..f054654 100644 --- a/src/gallium/targets/d3dadapter9/drm.c +++ b/src/gallium/targets/d3dadapter9/drm.c @@ -79,14 +79,20 @@ struct d3dadapter9drm_context static void drm_destroy( struct d3dadapter9_context *ctx ) { + if (ctx->ref) + ctx->ref->destroy(ctx->ref); + /* because ref is a wrapper around hal, freeing ref frees hal too. */ + else if (ctx->hal) + ctx->hal->destroy(ctx->hal); #if !GALLIUM_STATIC_TARGETS - struct d3dadapter9drm_context *drm = (struct d3dadapter9drm_context *)ctx; + { + struct d3dadapter9drm_context *drm = (struct d3dadapter9drm_context *)ctx; - /* pipe_loader_sw destroys the context */ - if (drm->swdev) - pipe_loader_release(&drm->swdev, 1); - if (drm->dev) - pipe_loader_release(&drm->dev, 1); + if (drm->swdev) + pipe_loader_release(&drm->swdev, 1); + if (drm->dev) + pipe_loader_release(&drm->dev, 1); + } #endif FREE(ctx); |