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 ); 
+}
+