Add a place holder for private data for consumers.
[platform/adaptation/renesas_rcar/wayland-kms.git] / wayland-kms.c
index fbe6532..62466f3 100644 (file)
@@ -73,6 +73,16 @@ 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;
+       if (buffer->handle) {
+               close.handle = buffer->handle;
+               ret = drmIoctl(buffer->kms->fd, DRM_IOCTL_GEM_CLOSE, &close);
+               if (ret)
+                       WLKMS_DEBUG("%s: %s: DRM_IOCTL_GEM_CLOSE failed.(%s)\n",
+                                __FILE__, __func__, strerror(errno));
+       }
+
        free(buffer);
 }
 
@@ -209,6 +219,11 @@ bind_kms(struct wl_client *client, void *data, uint32_t version, uint32_t id)
        wl_resource_post_event(resource, WL_KMS_FORMAT, WL_KMS_FORMAT_XRGB8888);
 }
 
+int wayland_kms_fd_get(struct wl_kms* kms)
+{
+       return kms->fd;
+}
+
 struct wl_kms_buffer *wayland_kms_buffer_get(struct wl_resource *resource)
 {
        if (resource == NULL)