summaryrefslogtreecommitdiff
path: root/libc2dcolorconvert
diff options
context:
space:
mode:
authorKarthikeyan Periasamy <kperiasa@codeaurora.org>2017-08-08 17:40:18 -0700
committerKarthikeyan Periasamy <kperiasa@codeaurora.org>2017-08-08 18:21:07 -0700
commitbe1a4938f19be45125e6dfdaf10885f896ed496e (patch)
tree96122127b48151b230bd8849334536516626a408 /libc2dcolorconvert
parent7c92f44e4f57726b5b014ddff4e5bdadb31710cc (diff)
downloadmedia-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.cpp15
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,