diff -r ae942d28ec0e -r 2455ef1f5bbc javauis/mmapi_akn/baseline/src/cmmasnapshotevent.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/mmapi_akn/baseline/src/cmmasnapshotevent.cpp Wed Sep 01 12:33:18 2010 +0100 @@ -0,0 +1,93 @@ +/* +* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: This class is used to post events to the java. +* +*/ + + +// INCLUDE FILES +#include + +#include "cmmasnapshotevent.h" + +CMMASnapshotEvent::CMMASnapshotEvent(jobject aNotifyObject, + jmethodID aHandleEventMethod, + TInt aError, + HBufC8* aImageBuffer, + TDisposability aDisposable): + CMMAEvent(aNotifyObject, + aHandleEventMethod, + aDisposable) +{ + iEventData = aError; + iImageBuffer = aImageBuffer; +} + +CMMASnapshotEvent::~CMMASnapshotEvent() +{ + // image buffer need to be deleted if + // event server hasn't sent this event before + // middlet is destroyed + delete iImageBuffer; + +} + +void CMMASnapshotEvent::Dispatch(JNIEnv& aJni) +{ + DEBUG("MMA::CMMASnapshotEvent::Dispatch"); + + // create java byte array + + jbyteArray byteArray; + + if (iImageBuffer) + + { + byteArray = aJni.NewByteArray(iImageBuffer->Size()); + if (byteArray) + { + ArrayUtils::CopyToJava(aJni, + *iImageBuffer, + byteArray, + 0, + iImageBuffer->Size()); + } + } + else + { + byteArray = aJni.NewByteArray(0); + } + + if (!byteArray) + { + delete iImageBuffer; + iImageBuffer = NULL; // otherwise double delete in destructor + DEBUG("MMA::CMMASnapshotEvent::Dispatch - Failed to create ByteArray"); + return; + } + + + aJni.CallVoidMethod(iListenerObject, + iHandleEventMethod, + iEventData, + byteArray); + + delete iImageBuffer; + iImageBuffer = NULL; // otherwise double delete in destructor + + aJni.DeleteLocalRef(byteArray); + +} + +// END OF FILE