release jni memory

pull/542/head
sylar 10 years ago
parent bd4e832cf3
commit db10c87b89

@ -1,20 +1,27 @@
#include "android_commandLine.h"
#include "string.h"
const char **argvData;
int argcData;
extern "C" void releaseArgv();
void releaseArgv() {
delete[] argvData;
}
JNIEXPORT void JNICALL Java_ui_activity_GameActivity_commandLine(JNIEnv *env,
jobject obj, jint argc, jobjectArray stringArray) {
jboolean iscopy;
argcData = (int) argc;
argvData= new const char * [argcData+1];
argvData = new const char *[argcData + 1];
argvData[0] = "openmw";
for (int i = 1; i < argcData+1; i++) {
jstring string = (jstring) (*env).GetObjectArrayElement(stringArray, i-1);
for (int i = 1; i < argcData + 1; i++) {
jstring string = (jstring) (env)->GetObjectArrayElement(stringArray,
i - 1);
argvData[i] = (env)->GetStringUTFChars(string, &iscopy);
(env)->DeleteLocalRef(string);
}
(env)->DeleteLocalRef(stringArray);
}

@ -13,6 +13,7 @@
extern void SDL_Android_Init(JNIEnv* env, jclass cls);
extern int argcData;
extern const char **argvData;
void releaseArgv();
int Java_org_libsdl_app_SDLActivity_nativeInit(JNIEnv* env, jclass cls,
jobject obj) {
@ -26,8 +27,7 @@ int Java_org_libsdl_app_SDLActivity_nativeInit(JNIEnv* env, jclass cls,
int status;
status = main(argcData+1, argvData);
free (argvData);
releaseArgv();
/* Do not issue an exit or the whole application will terminate instead of just the SDL thread */
/* exit(status); */

@ -31,6 +31,7 @@ JNIEXPORT void JNICALL Java_ui_activity_GameActivity_getPathToJni(JNIEnv *env, j
{
jboolean iscopy;
Buffer::setData((env)->GetStringUTFChars(prompt, &iscopy));
(env)->DeleteLocalRef(prompt);
}
namespace

Loading…
Cancel
Save