diff --git a/src/gfxstream/guest/platform/kumquat/VirtGpuKumquat.h b/src/gfxstream/guest/platform/kumquat/VirtGpuKumquat.h index 624decec61c..5ab27995a68 100644 --- a/src/gfxstream/guest/platform/kumquat/VirtGpuKumquat.h +++ b/src/gfxstream/guest/platform/kumquat/VirtGpuKumquat.h @@ -40,7 +40,6 @@ class VirtGpuKumquatResource : public std::enable_shared_from_this(shared_from_this(), (uint8_t*)map.ptr, - mSize); + return std::make_shared(shared_from_this(), mVirtGpu, + (uint8_t*)map.ptr, mSize); } int VirtGpuKumquatResource::exportBlob(struct VirtGpuExternalHandle& handle) { diff --git a/src/gfxstream/guest/platform/kumquat/VirtGpuKumquatBlobMapping.cpp b/src/gfxstream/guest/platform/kumquat/VirtGpuKumquatBlobMapping.cpp index e4869db4109..c932e938158 100644 --- a/src/gfxstream/guest/platform/kumquat/VirtGpuKumquatBlobMapping.cpp +++ b/src/gfxstream/guest/platform/kumquat/VirtGpuKumquatBlobMapping.cpp @@ -15,11 +15,18 @@ */ #include "VirtGpuKumquat.h" +#include "cutils/log.h" -VirtGpuKumquatResourceMapping::VirtGpuKumquatResourceMapping(VirtGpuResourcePtr blob, uint8_t* ptr, - uint64_t size) - : mBlob(blob), mPtr(ptr), mSize(size) {} +VirtGpuKumquatResourceMapping::VirtGpuKumquatResourceMapping(VirtGpuResourcePtr blob, + struct virtgpu_kumquat* virtGpu, + uint8_t* ptr, uint64_t size) + : mBlob(blob), mVirtGpu(virtGpu), mPtr(ptr), mSize(size) {} -VirtGpuKumquatResourceMapping::~VirtGpuKumquatResourceMapping(void) { return; } +VirtGpuKumquatResourceMapping::~VirtGpuKumquatResourceMapping(void) { + int32_t ret = virtgpu_kumquat_resource_unmap(mVirtGpu, mBlob->getBlobHandle()); + if (ret) { + ALOGE("failed to unmap buffer"); + } +} uint8_t* VirtGpuKumquatResourceMapping::asRawPtr(void) { return mPtr; }