summaryrefslogtreecommitdiff
path: root/libc2dcolorconvert
diff options
context:
space:
mode:
authorPraveen Chavan <pchavan@codeaurora.org>2016-01-08 12:06:09 -0800
committerPraveen Chavan <pchavan@codeaurora.org>2016-05-17 17:03:27 -0700
commitd1f43ea99a81aa6fcd2cf35eea3e03d84bfebbd7 (patch)
tree0aec8acd2379ca5a844a79570c3921c844b163f9 /libc2dcolorconvert
parent4cb4bc088fba2cb1bc68722fd56a70f479524c77 (diff)
downloadmedia-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.cpp39
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)