2010-06-29 00:40:12 +12:00
|
|
|
/*******************************************************************************
|
|
|
|
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
|
|
|
|
*******************************************************************************/
|
|
|
|
|
2010-06-29 01:30:11 +12:00
|
|
|
extern "C" void Java_org_libsdl_android_SDLActivity_nativeInit( JNIEnv* env, jobject obj )
|
2010-06-29 00:40:12 +12:00
|
|
|
{
|
|
|
|
__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");
|
|
|
|
|
2010-06-29 01:30:11 +12:00
|
|
|
jclass cls = mEnv->FindClass ("org/libsdl/android/SDLActivity");
|
2010-06-29 00:40:12 +12:00
|
|
|
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 );
|
|
|
|
}
|
|
|
|
|