From 71771b3b1bbcafe84e7bd14941b98a1b1d6c8a60 Mon Sep 17 00:00:00 2001 From: Santosh Madhava Date: Mon, 28 Feb 2011 18:30:53 -0800 Subject: [PATCH] Fix for issue 3431967: Memory leak from video editor engine Change-Id: Ibaa66d7c95f2a60b59dc3102d3b5130ff1fbc62e --- media/jni/mediaeditor/VideoEditorMain.cpp | 47 +++++++++++++---------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/media/jni/mediaeditor/VideoEditorMain.cpp b/media/jni/mediaeditor/VideoEditorMain.cpp index 9fe026661b332..8cda14eee2e49 100755 --- a/media/jni/mediaeditor/VideoEditorMain.cpp +++ b/media/jni/mediaeditor/VideoEditorMain.cpp @@ -453,7 +453,11 @@ static void jniPreviewProgressCallback (void* cookie, M4OSA_UInt32 msgType, case MSG_TYPE_OVERLAY_CLEAR: isSendProgress = false; - pContext->mOverlayFileName = NULL; + if (pContext->mOverlayFileName != NULL) { + M4OSA_free((M4OSA_MemAddr32)pContext->mOverlayFileName); + pContext->mOverlayFileName = NULL; + } + LOGV("MSG_TYPE_OVERLAY_CLEAR"); //argc is not used pContext->mIsUpdateOverlay = true; @@ -1760,6 +1764,17 @@ videoEditor_populateSettings( VIDEOEDIT_LOG_EDIT_SETTINGS(pContext->pEditSettings); } } + /* free previous allocations , if any */ + if (pContext->mAudioSettings != M4OSA_NULL) { + if (pContext->mAudioSettings->pFile != NULL) { + M4OSA_free((M4OSA_MemAddr32)pContext->mAudioSettings->pFile); + pContext->mAudioSettings->pFile = M4OSA_NULL; + } + if (pContext->mAudioSettings->pPCMFilePath != NULL) { + M4OSA_free((M4OSA_MemAddr32)pContext->mAudioSettings->pPCMFilePath); + pContext->mAudioSettings->pPCMFilePath = M4OSA_NULL; + } + } if (audioSettingObject != M4OSA_NULL) { jclass audioSettingClazz = pEnv->FindClass(AUDIO_SETTINGS_CLASS_NAME); @@ -1823,16 +1838,6 @@ videoEditor_populateSettings( = pEnv->GetIntField(audioSettingObject,fid); M4OSA_TRACE1_1("fileType = %d",pContext->mAudioSettings->fileType); - /* free previous allocations , if any */ - if (pContext->mAudioSettings->pFile != NULL) { - M4OSA_free((M4OSA_MemAddr32)pContext->mAudioSettings->pFile); - pContext->mAudioSettings->pFile = M4OSA_NULL; - } - if (pContext->mAudioSettings->pPCMFilePath != NULL) { - M4OSA_free((M4OSA_MemAddr32)pContext->mAudioSettings->pPCMFilePath); - pContext->mAudioSettings->pPCMFilePath = M4OSA_NULL; - } - fid = pEnv->GetFieldID(audioSettingClazz,"pFile","Ljava/lang/String;"); strPath = (jstring)pEnv->GetObjectField(audioSettingObject,fid); pTempChar = (M4OSA_Char*)pEnv->GetStringUTFChars(strPath, M4OSA_NULL); @@ -3044,18 +3049,18 @@ videoEditor_release( pContext->mPreviewController = M4OSA_NULL; } - if (pContext->mAudioSettings->pFile != NULL) { - M4OSA_free((M4OSA_MemAddr32)pContext->mAudioSettings->pFile); - pContext->mAudioSettings->pFile = M4OSA_NULL; - } - if (pContext->mAudioSettings->pPCMFilePath != NULL) { - M4OSA_free((M4OSA_MemAddr32)pContext->mAudioSettings->pPCMFilePath); - pContext->mAudioSettings->pPCMFilePath = M4OSA_NULL; - } - - // Free the context. + // Free the mAudioSettings context. if(pContext->mAudioSettings != M4OSA_NULL) { + if (pContext->mAudioSettings->pFile != NULL) { + M4OSA_free((M4OSA_MemAddr32)pContext->mAudioSettings->pFile); + pContext->mAudioSettings->pFile = M4OSA_NULL; + } + if (pContext->mAudioSettings->pPCMFilePath != NULL) { + M4OSA_free((M4OSA_MemAddr32)pContext->mAudioSettings->pPCMFilePath); + pContext->mAudioSettings->pPCMFilePath = M4OSA_NULL; + } + M4OSA_free((M4OSA_MemAddr32)pContext->mAudioSettings); pContext->mAudioSettings = M4OSA_NULL; }