summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXiang, Haihao <haihao.xiang@intel.com>2010-11-15 15:05:29 +0800
committerXiang, Haihao <haihao.xiang@intel.com>2010-12-06 12:50:05 +0800
commit3630d4dfcf1e023c9d749be63a9392db6c7dda02 (patch)
tree8c45cf9e9e53daba689ba14924eee98c4ce4d7e9
parent9d9cd9adc3812a251839db571113189d65d8a4d9 (diff)
downloadlibva-3630d4dfcf1e023c9d749be63a9392db6c7dda02.tar.gz
i965_drv_video: release mfd context
Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
-rw-r--r--i965_drv_video/gen6_mfd.c33
1 files changed, 19 insertions, 14 deletions
diff --git a/i965_drv_video/gen6_mfd.c b/i965_drv_video/gen6_mfd.c
index 9da9e6d..c6fab96 100644
--- a/i965_drv_video/gen6_mfd.c
+++ b/i965_drv_video/gen6_mfd.c
@@ -1425,27 +1425,32 @@ gen6_mfd_terminate(VADriverContextP ctx)
struct i965_media_state *media_state = &i965->media_state;
struct gen6_mfd_context *gen6_mfd_context = media_state->private_context;
- dri_bo_unreference(gen6_mfd_context->post_deblocking_output.bo);
- gen6_mfd_context->post_deblocking_output.bo = NULL;
+ if (gen6_mfd_context) {
+ dri_bo_unreference(gen6_mfd_context->post_deblocking_output.bo);
+ gen6_mfd_context->post_deblocking_output.bo = NULL;
- dri_bo_unreference(gen6_mfd_context->pre_deblocking_output.bo);
- gen6_mfd_context->pre_deblocking_output.bo = NULL;
+ dri_bo_unreference(gen6_mfd_context->pre_deblocking_output.bo);
+ gen6_mfd_context->pre_deblocking_output.bo = NULL;
- dri_bo_unreference(gen6_mfd_context->intra_row_store_scratch_buffer.bo);
- gen6_mfd_context->intra_row_store_scratch_buffer.bo = NULL;
+ dri_bo_unreference(gen6_mfd_context->intra_row_store_scratch_buffer.bo);
+ gen6_mfd_context->intra_row_store_scratch_buffer.bo = NULL;
- dri_bo_unreference(gen6_mfd_context->deblocking_filter_row_store_scratch_buffer.bo);
- gen6_mfd_context->deblocking_filter_row_store_scratch_buffer.bo = NULL;
+ dri_bo_unreference(gen6_mfd_context->deblocking_filter_row_store_scratch_buffer.bo);
+ gen6_mfd_context->deblocking_filter_row_store_scratch_buffer.bo = NULL;
- dri_bo_unreference(gen6_mfd_context->bsd_mpc_row_store_scratch_buffer.bo);
- gen6_mfd_context->bsd_mpc_row_store_scratch_buffer.bo = NULL;
+ dri_bo_unreference(gen6_mfd_context->bsd_mpc_row_store_scratch_buffer.bo);
+ gen6_mfd_context->bsd_mpc_row_store_scratch_buffer.bo = NULL;
- dri_bo_unreference(gen6_mfd_context->mpr_row_store_scratch_buffer.bo);
- gen6_mfd_context->mpr_row_store_scratch_buffer.bo = NULL;
+ dri_bo_unreference(gen6_mfd_context->mpr_row_store_scratch_buffer.bo);
+ gen6_mfd_context->mpr_row_store_scratch_buffer.bo = NULL;
- dri_bo_unreference(gen6_mfd_context->bitplane_read_buffer.bo);
- gen6_mfd_context->bitplane_read_buffer.bo = NULL;
+ dri_bo_unreference(gen6_mfd_context->bitplane_read_buffer.bo);
+ gen6_mfd_context->bitplane_read_buffer.bo = NULL;
+
+ free(gen6_mfd_context);
+ }
+ media_state->private_context = NULL;
return True;
}