annotate 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
rev   line source
4711
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
1 /*******************************************************************************
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
2 Headers
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
3 *******************************************************************************/
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
4 #include <jni.h>
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
5 #include <sys/time.h>
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
6 #include <time.h>
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
7 #include <android/log.h>
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
8 #include <stdint.h>
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
9
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
10 #include <stdio.h>
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
11 #include <stdlib.h>
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
12 #include <math.h>
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
13
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
14 #include <pthread.h>
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
15
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
16 #include "importgl.h"
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
17 #include "egl.h"
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
18
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
19 /*******************************************************************************
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
20 Globals
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
21 *******************************************************************************/
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
22 static long _getTime(void){
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
23 struct timeval now;
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
24 gettimeofday(&now, NULL);
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
25 return (long)(now.tv_sec*1000 + now.tv_usec/1000);
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
26 }
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
27
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
28 JNIEnv* mEnv = NULL;
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
29 JavaVM* mVM = NULL;
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
30
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
31 //Main activity
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
32 jclass mActivityInstance;
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
33
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
34 //method signatures
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
35 jmethodID midCreateGLContext;
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
36 jmethodID midFlipBuffers;
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
37
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
38 extern "C" int SDL_main();
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
39
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
40 /*******************************************************************************
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
41 Functions called by JNI
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
42 *******************************************************************************/
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
43
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
44 extern "C" void Java_org_libsdl_android_TestActivity_nativeInit( JNIEnv* env, jobject obj )
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
45 {
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
46 __android_log_print(ANDROID_LOG_INFO, "SDL", "JNI: NativeInit");
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
47
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
48 mEnv = env;
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
49
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
50 SDL_main();
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
51 }
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
52
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
53 extern "C" jint JNI_OnLoad(JavaVM* vm, void* reserved)
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
54 {
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
55 JNIEnv* env = NULL;
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
56 jint result = -1;
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
57
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
58 if (vm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) {
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
59 return result;
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
60 }
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
61
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
62 mEnv = env;
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
63
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
64 __android_log_print(ANDROID_LOG_INFO, "SDL", "JNI: OnLoad");
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
65
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
66 jclass cls = mEnv->FindClass ("org/libsdl/android/TestActivity");
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
67 mActivityInstance = cls;
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
68 midCreateGLContext = mEnv->GetStaticMethodID(cls,"createGLContext","()V");
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
69 midFlipBuffers = mEnv->GetStaticMethodID(cls,"flipBuffers","()V");
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
70
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
71 if(!midCreateGLContext || !midFlipBuffers){
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
72 __android_log_print(ANDROID_LOG_INFO, "SDL", "SDL: Bad mids\n");
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
73 }else{
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
74 __android_log_print(ANDROID_LOG_INFO, "SDL", "SDL: Good mids\n");
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
75 }
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
76
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
77 return JNI_VERSION_1_4;
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
78 }
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
79
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
80
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
81
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
82 /*******************************************************************************
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
83 Functions called by SDL
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
84 *******************************************************************************/
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
85 extern "C" void sdl_create_context(){
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
86 __android_log_print(ANDROID_LOG_INFO, "SDL", "SDL: sdl_create_context()\n");
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
87
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
88 mEnv->CallStaticVoidMethod(mActivityInstance, midCreateGLContext );
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
89 __android_log_print(ANDROID_LOG_INFO, "SDL", "SDL: sdl_create_context() return\n");
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
90
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
91 // exit(1);
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
92 }
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
93
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
94 extern "C" void sdl_render(){
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
95
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
96 //When we get here, we've accumulated a full frame
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
97 //__android_log_print(ANDROID_LOG_INFO, "SDL", "SDL: sdl_render()");
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
98
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
99 mEnv->CallStaticVoidMethod(mActivityInstance, midFlipBuffers );
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
100 }
ed040b480a9f - Restructured threads and application structure.
Paul Hunkin <paul@bieh.net>
parents:
diff changeset
101