diff -r f5050f1da672 -r 04becd199f91 javauis/mmapi_akn/baseline/src/tempocontrol.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/mmapi_akn/baseline/src/tempocontrol.cpp Tue Apr 27 16:30:29 2010 +0300 @@ -0,0 +1,139 @@ +/* +* 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 has JNI wrappers for CMMATempoControl +* +*/ + +#include + +#include "com_nokia_microedition_media_control_TempoControl.h" +#include "cmmaeventsource.h" +#include "cmmamiditempocontrol.h" +#include + +// +// Wrapper functions which are needed in event source execution. +// If method to be called can leave ExecuteTrap must be used, +// otherwise Execute and ExecuteV can be used. +// +// + +/** + * Local function which can be used to call CMMATempoControl class methods. + * Type of of the function pointer must be + * TInt CMMATempoControl::aFunc( TInt aData ) + * + * @param aTempoControl CMMATempoControl pointer. + * @param aFunc Pointer to the CMMATempoControl method. + * @param aData Parameter to passed to the aFunc method + * @param aReturnValue The return value of the aFunc will + * be assigned to this parameter. + */ +LOCAL_C void ReturnIntParamIntFuncL(CMMAMIDITempoControl* aTempoControl, + TInt(CMMAMIDITempoControl::*aFuncL)(TInt), + TInt aData, + TInt* aReturnValue) +{ + // call TInt CMMATempoControl::aFunc( TInt aData ) method. + *aReturnValue = (aTempoControl->*aFuncL)(aData); +} + +/** + * Local function which can be used to call CMMATempoControl class methods. + * Type of of the function pointer must be + * TInt CMMATempoControl::aFunc() + * + * @param aTempoControl CMMATempoControl pointer. + * @param aFunc Pointer to the CMMATempoControl method. + * @param aReturnValue The return value of the aFunc will + * be assigned to this parameter. + */ +LOCAL_C void ReturnIntFuncL(CMMAMIDITempoControl* aTempoControl, + TInt(CMMAMIDITempoControl::*aFuncL)(), + TInt* aReturnValue) +{ + // call TInt CMMATempoControl::aFunc() method. + *aReturnValue = (aTempoControl->*aFuncL)(); +} + +// +// JNI functions. Prototypes are generated and commented in Java class +// com_nokia_microedition_media_control_TempoControl +// + +/** + * JNI function from com.nokia.microedition.media.control.TempoControl + */ +JNIEXPORT jint JNICALL +Java_com_nokia_microedition_media_control_TempoControl__1setTempo +(JNIEnv*, + jobject, + jint aControlHandle, + jint aEventSourceHandle, + jint aTempo) // parameter boundary is checked in Java side. +{ + // Get pointer to native event source. + CMMAEventSource* eventSource = + JavaUnhand< CMMAEventSource >(aEventSourceHandle); + + CMMAMIDITempoControl* tempoControl = + JavaUnhand< CMMAMIDITempoControl >(aControlHandle); + + // Value returned from SetTempo method will be assigned to returnValue. + TInt returnValue = 0; + + // Setting tempo will not leave, it just assigns default + // value to the returnValue variable. + TInt error; + error = eventSource->ExecuteTrap(&ReturnIntParamIntFuncL, + tempoControl, + &CMMAMIDITempoControl::SetTempoL, + aTempo, + &returnValue); + + DEBUG_INT("TempoControl__1setTempo return value %d", returnValue); + + return (error == KErrNone) ? returnValue : error; +} + +/** + * JNI function from com.nokia.microedition.media.control.TempoControl + */ +JNIEXPORT jint JNICALL +Java_com_nokia_microedition_media_control_TempoControl__1getTempo +(JNIEnv*, + jobject, + jint aControlHandle, + jint aEventSourceHandle) +{ + // Get pointer to native event source. + CMMAEventSource* eventSource = + JavaUnhand< CMMAEventSource >(aEventSourceHandle); + + CMMAMIDITempoControl* tempoControl = + JavaUnhand< CMMAMIDITempoControl >(aControlHandle); + + TInt returnValue = 0; + TInt error; + + error = eventSource->ExecuteTrap(&ReturnIntFuncL, + tempoControl, + &CMMAMIDITempoControl::TempoL, + &returnValue); + + DEBUG_INT("TempoControl__1getTempo return value %d", returnValue); + + return (error == KErrNone) ? returnValue : error; +} +// END OF FILE