diff options
author | Rob Clark <rob@ti.com> | 2012-06-11 08:52:24 -0500 |
---|---|---|
committer | Rob Clark <rob@ti.com> | 2012-07-13 16:16:46 -0500 |
commit | 8116a32df613df4433aa1b128c58bf2c18479824 (patch) | |
tree | 95da2da3de090f8a3818364fd51cfd9197c9d82e /omap | |
parent | 992e2afd59539d169689bf21d78fac8b5cea4e3c (diff) |
omap: clarify dmabuf file descriptor ownership
Signed-off-by: Rob Clark <rob@ti.com>
Diffstat (limited to 'omap')
-rw-r--r-- | omap/omap_drm.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/omap/omap_drm.c b/omap/omap_drm.c index 336da115..464dea9c 100644 --- a/omap/omap_drm.c +++ b/omap/omap_drm.c @@ -35,6 +35,7 @@ #include <errno.h> #include <sys/mman.h> #include <fcntl.h> +#include <unistd.h> #include <xf86drm.h> @@ -228,6 +229,10 @@ void omap_bo_del(struct omap_bo *bo) munmap(bo->map, bo->size); } + if (bo->fd) { + close(bo->fd); + } + if (bo->handle) { struct drm_gem_close req = { .handle = bo->handle, @@ -266,6 +271,9 @@ uint32_t omap_bo_handle(struct omap_bo *bo) return bo->handle; } +/* caller owns the dmabuf fd that is returned and is responsible + * to close() it when done + */ int omap_bo_dmabuf(struct omap_bo *bo) { if (!bo->fd) { @@ -282,7 +290,7 @@ int omap_bo_dmabuf(struct omap_bo *bo) bo->fd = req.fd; } - return bo->fd; + return dup(bo->fd); } uint32_t omap_bo_size(struct omap_bo *bo) |