diff options
author | Praveen Chavan <pchavan@codeaurora.org> | 2016-01-08 12:06:09 -0800 |
---|---|---|
committer | Praveen Chavan <pchavan@codeaurora.org> | 2016-05-17 17:03:27 -0700 |
commit | d1f43ea99a81aa6fcd2cf35eea3e03d84bfebbd7 (patch) | |
tree | 0aec8acd2379ca5a844a79570c3921c844b163f9 /libc2dcolorconvert | |
parent | 4cb4bc088fba2cb1bc68722fd56a70f479524c77 (diff) | |
download | media-d1f43ea99a81aa6fcd2cf35eea3e03d84bfebbd7.tar.gz |
libc2dcolorconvert: Close adreno lib handle during cleanup
Close the adreno utils lib if it was opened successfully
CRs-Fixed: 959338
Change-Id: I5e84efdc372b5c39ad9b569d87c7346cdd8869a8
Diffstat (limited to 'libc2dcolorconvert')
-rw-r--r-- | libc2dcolorconvert/C2DColorConverter.cpp | 39 |
1 files changed, 21 insertions, 18 deletions
diff --git a/libc2dcolorconvert/C2DColorConverter.cpp b/libc2dcolorconvert/C2DColorConverter.cpp index 48ebb8dd..42b6e496 100644 --- a/libc2dcolorconvert/C2DColorConverter.cpp +++ b/libc2dcolorconvert/C2DColorConverter.cpp @@ -114,6 +114,8 @@ private: }; C2DColorConverter::C2DColorConverter(size_t srcWidth, size_t srcHeight, size_t dstWidth, size_t dstHeight, ColorConvertFormat srcFormat, ColorConvertFormat dstFormat, int32_t flags, size_t srcStride) + : mC2DLibHandle(NULL), + mAdrenoUtilsHandle(NULL) { mError = 0; if (NV12_UBWC == dstFormat) { @@ -146,7 +148,7 @@ C2DColorConverter::C2DColorConverter(size_t srcWidth, size_t srcHeight, size_t d return; } - mAdrenoUtilsHandle = dlopen("libadreno_utils.so", RTLD_NOW); + mAdrenoUtilsHandle = dlopen("libadreno_utils.so", RTLD_NOW); if (!mAdrenoUtilsHandle) { ALOGE("FATAL ERROR: could not dlopen libadreno_utils.so: %s", dlerror()); mError = -1; @@ -192,28 +194,29 @@ C2DColorConverter::C2DColorConverter(size_t srcWidth, size_t srcHeight, size_t d C2DColorConverter::~C2DColorConverter() { - if (mError) { - if (mC2DLibHandle) { - dlclose(mC2DLibHandle); + if (!mError && mC2DLibHandle) { + + mC2DDestroySurface(mDstSurface); + mC2DDestroySurface(mSrcSurface); + if (isYUVSurface(mSrcFormat)) { + delete ((C2D_YUV_SURFACE_DEF *)mSrcSurfaceDef); + } else { + delete ((C2D_RGB_SURFACE_DEF *)mSrcSurfaceDef); } - return; - } - mC2DDestroySurface(mDstSurface); - mC2DDestroySurface(mSrcSurface); - if (isYUVSurface(mSrcFormat)) { - delete ((C2D_YUV_SURFACE_DEF *)mSrcSurfaceDef); - } else { - delete ((C2D_RGB_SURFACE_DEF *)mSrcSurfaceDef); + if (isYUVSurface(mDstFormat)) { + delete ((C2D_YUV_SURFACE_DEF *)mDstSurfaceDef); + } else { + delete ((C2D_RGB_SURFACE_DEF *)mDstSurfaceDef); + } } - if (isYUVSurface(mDstFormat)) { - delete ((C2D_YUV_SURFACE_DEF *)mDstSurfaceDef); - } else { - delete ((C2D_RGB_SURFACE_DEF *)mDstSurfaceDef); + if (mC2DLibHandle) { + dlclose(mC2DLibHandle); + } + if (mAdrenoUtilsHandle) { + dlclose(mAdrenoUtilsHandle); } - - dlclose(mC2DLibHandle); } int C2DColorConverter::convertC2D(int srcFd, void *srcBase, void * srcData, int dstFd, void *dstBase, void * dstData) |