Release DMABUFs when destroying the buffer. 01/30501/4
authorTakanari Hayama <taki@igel.co.jp>
Mon, 29 Sep 2014 04:15:50 +0000 (13:15 +0900)
committerTony SIM <chinyeow.sim.xt@renesas.com>
Thu, 18 Dec 2014 09:39:49 +0000 (01:39 -0800)
Otherwise references to DMABUFs remained after the buffer is destroyed.

Change-Id: Ic04f861dd067ad8e420d21cd492fb2e2e8a9b585
Signed-off-by: Tony SIM <chinyeow.sim.xt@renesas.com>
wayland-kms.c

index 2ea3a8d..98b482d 100644 (file)
@@ -73,12 +73,15 @@ struct wl_kms {
 static void destroy_buffer(struct wl_resource *resource)
 {
        struct wl_kms_buffer *buffer = resource->data;
-       struct drm_gem_close close;
-       int ret;
+       struct drm_gem_close gem_close;
+       int i, ret;
+
+       for (i = 0; i < buffer->num_planes; i++)
+               close(buffer->planes[i].fd);
 
        if (buffer->handle) {
-               close.handle = buffer->handle;
-               ret = drmIoctl(buffer->kms->fd, DRM_IOCTL_GEM_CLOSE, &close);
+               gem_close.handle = buffer->handle;
+               ret = drmIoctl(buffer->kms->fd, DRM_IOCTL_GEM_CLOSE, &gem_close);
                if (ret)
                        WLKMS_DEBUG("%s: %s: DRM_IOCTL_GEM_CLOSE failed.(%s)\n",
                                 __FILE__, __func__, strerror(errno));