diff options
author | Karthikeyan Periasamy <kperiasa@codeaurora.org> | 2017-08-08 17:40:18 -0700 |
---|---|---|
committer | Karthikeyan Periasamy <kperiasa@codeaurora.org> | 2017-08-08 18:21:07 -0700 |
commit | be1a4938f19be45125e6dfdaf10885f896ed496e (patch) | |
tree | 96122127b48151b230bd8849334536516626a408 /libc2dcolorconvert | |
parent | 7c92f44e4f57726b5b014ddff4e5bdadb31710cc (diff) | |
download | media-be1a4938f19be45125e6dfdaf10885f896ed496e.tar.gz |
libc2dcolorconvert: unmap surface memory after use
Fix the memory leak by unmapping the surface memory
before requesting for a new surface memory.
Change-Id: Iffca8eae692d148a2f0874ee7d9be7770d627f89
CRs-Fixed: 2089675
Diffstat (limited to 'libc2dcolorconvert')
-rw-r--r-- | libc2dcolorconvert/C2DColorConverter.cpp | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/libc2dcolorconvert/C2DColorConverter.cpp b/libc2dcolorconvert/C2DColorConverter.cpp index 0b0732bc..0551a8fd 100644 --- a/libc2dcolorconvert/C2DColorConverter.cpp +++ b/libc2dcolorconvert/C2DColorConverter.cpp @@ -278,6 +278,17 @@ int32_t C2DColorConverter::getDummySurfaceDef(ColorConvertFormat format, { void *surfaceDef = NULL; C2D_SURFACE_TYPE hostSurfaceType; + C2D_STATUS ret; + + if (isSource){ + if (mSrcSurface) { + mC2DDestroySurface(mSrcSurface); + mSrcSurface = 0; + } + } else if (mDstSurface) { + mC2DDestroySurface(mDstSurface); + mDstSurface = 0; + } if (isYUVSurface(format)) { C2D_YUV_SURFACE_DEF **surfaceYUVDef = (C2D_YUV_SURFACE_DEF **) @@ -342,14 +353,14 @@ int32_t C2DColorConverter::getDummySurfaceDef(ColorConvertFormat format, hostSurfaceType = C2D_SURFACE_RGB_HOST; } - mC2DCreateSurface(isSource ? &mSrcSurface : + ret = mC2DCreateSurface(isSource ? &mSrcSurface : &mDstSurface, isSource ? C2D_SOURCE : C2D_TARGET, (C2D_SURFACE_TYPE)(hostSurfaceType | C2D_SURFACE_WITH_PHYS | C2D_SURFACE_WITH_PHYS_DUMMY), surfaceDef); - return 0; + return (int32_t) ret; } C2D_STATUS C2DColorConverter::updateYUVSurfaceDef(uint8_t *gpuAddr, void *base, |