diff options
author | Andy Ross <andy.ross@windriver.com> | 2013-06-04 11:32:29 -0700 |
---|---|---|
committer | Andy Ross <andy.ross@windriver.com> | 2013-06-12 15:57:30 -0700 |
commit | 8ab337a4ef935d112951cefefd8dead4fdcb3c5b (patch) | |
tree | cabb40dca7c7233c422e847718f5f0be9f3862c3 | |
parent | 04978c8f3086255bc0b83c407a1d605c19527253 (diff) | |
download | external_drm_gralloc-8ab337a4ef935d112951cefefd8dead4fdcb3c5b.zip external_drm_gralloc-8ab337a4ef935d112951cefefd8dead4fdcb3c5b.tar.gz external_drm_gralloc-8ab337a4ef935d112951cefefd8dead4fdcb3c5b.tar.bz2 |
Fix refcounting of mapped bo's
Buffer objects created locally by gralloc_drm_bo_create() would have
their refcount properly initialized to 1, but those received from
other processes via the drv alloc function would be left at zero, so
the delete check in gralloc_drm_bo_decref() would not destroy them as
the refcount would wrap negative. The buffer would then leak forever
until the mapping process (often surfaceflinger!) exitted.
Issue: AXIA-2991
Change-Id: I1a0c73b21cfbc67b441970002fd71712112e1871
Signed-off-by: Andy Ross <andy.ross@windriver.com>
-rw-r--r-- | gralloc_drm.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/gralloc_drm.c b/gralloc_drm.c index 27a49c5..bd38d57 100644 --- a/gralloc_drm.c +++ b/gralloc_drm.c @@ -207,6 +207,7 @@ static struct gralloc_drm_bo_t *validate_handle(buffer_handle_t _handle, bo->drm = drm; bo->imported = 1; bo->handle = handle; + bo->refcount = 1; } handle->data_owner = gralloc_drm_get_pid(); |