Mercurial > sdl-ios-xcode
diff android/testproject/jni/app-android.cpp @ 4711:ed040b480a9f
- Restructured threads and application structure.
- Moved to SurfaceView instead of GLSurfaceView
- Moved to C++ for the android library
author | Paul Hunkin <paul@bieh.net> |
---|---|
date | Tue, 29 Jun 2010 00:40:12 +1200 |
parents | |
children | 8319aa8fa4dc |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/android/testproject/jni/app-android.cpp Tue Jun 29 00:40:12 2010 +1200 @@ -0,0 +1,101 @@ +/******************************************************************************* + Headers +*******************************************************************************/ +#include <jni.h> +#include <sys/time.h> +#include <time.h> +#include <android/log.h> +#include <stdint.h> + +#include <stdio.h> +#include <stdlib.h> +#include <math.h> + +#include <pthread.h> + +#include "importgl.h" +#include "egl.h" + +/******************************************************************************* + Globals +*******************************************************************************/ +static long _getTime(void){ + struct timeval now; + gettimeofday(&now, NULL); + return (long)(now.tv_sec*1000 + now.tv_usec/1000); +} + +JNIEnv* mEnv = NULL; +JavaVM* mVM = NULL; + +//Main activity +jclass mActivityInstance; + +//method signatures +jmethodID midCreateGLContext; +jmethodID midFlipBuffers; + +extern "C" int SDL_main(); + +/******************************************************************************* + Functions called by JNI +*******************************************************************************/ + +extern "C" void Java_org_libsdl_android_TestActivity_nativeInit( JNIEnv* env, jobject obj ) +{ + __android_log_print(ANDROID_LOG_INFO, "SDL", "JNI: NativeInit"); + + mEnv = env; + + SDL_main(); +} + +extern "C" jint JNI_OnLoad(JavaVM* vm, void* reserved) +{ + JNIEnv* env = NULL; + jint result = -1; + + if (vm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) { + return result; + } + + mEnv = env; + + __android_log_print(ANDROID_LOG_INFO, "SDL", "JNI: OnLoad"); + + jclass cls = mEnv->FindClass ("org/libsdl/android/TestActivity"); + mActivityInstance = cls; + midCreateGLContext = mEnv->GetStaticMethodID(cls,"createGLContext","()V"); + midFlipBuffers = mEnv->GetStaticMethodID(cls,"flipBuffers","()V"); + + if(!midCreateGLContext || !midFlipBuffers){ + __android_log_print(ANDROID_LOG_INFO, "SDL", "SDL: Bad mids\n"); + }else{ + __android_log_print(ANDROID_LOG_INFO, "SDL", "SDL: Good mids\n"); + } + + return JNI_VERSION_1_4; +} + + + +/******************************************************************************* + Functions called by SDL +*******************************************************************************/ +extern "C" void sdl_create_context(){ + __android_log_print(ANDROID_LOG_INFO, "SDL", "SDL: sdl_create_context()\n"); + + mEnv->CallStaticVoidMethod(mActivityInstance, midCreateGLContext ); + __android_log_print(ANDROID_LOG_INFO, "SDL", "SDL: sdl_create_context() return\n"); + + // exit(1); +} + +extern "C" void sdl_render(){ + + //When we get here, we've accumulated a full frame + //__android_log_print(ANDROID_LOG_INFO, "SDL", "SDL: sdl_render()"); + + mEnv->CallStaticVoidMethod(mActivityInstance, midFlipBuffers ); +} +