summaryrefslogtreecommitdiff
path: root/platform/android/.old/java_glue.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/.old/java_glue.cpp')
-rw-r--r--platform/android/.old/java_glue.cpp181
1 files changed, 181 insertions, 0 deletions
diff --git a/platform/android/.old/java_glue.cpp b/platform/android/.old/java_glue.cpp
new file mode 100644
index 0000000000..38dbcc104f
--- /dev/null
+++ b/platform/android/.old/java_glue.cpp
@@ -0,0 +1,181 @@
+#include "java_glue.h"
+#include "os_android.h"
+#include "main/main.h"
+#include <unistd.h>
+#include "file_access_jandroid.h"
+#include "dir_access_jandroid.h"
+
+static OS_Android *os_android=NULL;
+
+
+struct TST {
+
+ int a;
+ TST() {
+
+ a=5;
+ }
+};
+
+TST tst;
+
+struct JAndroidPointerEvent {
+
+ Vector<OS_Android::TouchPos> points;
+ int pointer;
+ int what;
+};
+
+static List<JAndroidPointerEvent> pointer_events;
+static bool initialized=false;
+static Mutex *input_mutex=NULL;
+
+JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_init(JNIEnv * env, jobject obj, jint width, jint height)
+{
+
+
+ if (initialized) // wtf
+ return;
+
+ __android_log_print(ANDROID_LOG_INFO,"godot","**INIT EVENT! - %p\n",env);
+
+
+ initialized=true;
+
+ __android_log_print(ANDROID_LOG_INFO,"godot","***************** HELLO FROM JNI!!!!!!!!");
+
+ {
+ //setup IO Object
+
+ jclass cls = env->FindClass("com/android/godot/Godot");
+ if (cls) {
+
+ cls=(jclass)env->NewGlobalRef(cls);
+ __android_log_print(ANDROID_LOG_INFO,"godot","*******CLASS FOUND!!!");
+ }
+ __android_log_print(ANDROID_LOG_INFO,"godot","STEP2, %p",cls);
+ jfieldID fid = env->GetStaticFieldID(cls, "io", "Lcom/android/godot/GodotIO;");
+ __android_log_print(ANDROID_LOG_INFO,"godot","STEP3 %i",fid);
+ jobject ob = env->GetStaticObjectField(cls,fid);
+ __android_log_print(ANDROID_LOG_INFO,"godot","STEP4, %p",ob);
+ jobject gob = env->NewGlobalRef(ob);
+
+
+ FileAccessJAndroid::setup(env,gob);
+ DirAccessJAndroid::setup(env,gob);
+ }
+
+
+
+ os_android = new OS_Android(width,height);
+
+ char wd[500];
+ getcwd(wd,500);
+
+ __android_log_print(ANDROID_LOG_INFO,"godot","test construction %i\n",tst.a);
+ __android_log_print(ANDROID_LOG_INFO,"godot","running from dir %s\n",wd);
+
+ __android_log_print(ANDROID_LOG_INFO,"godot","**SETUP");
+
+
+
+#if 0
+ char *args[]={"-test","render",NULL};
+ __android_log_print(ANDROID_LOG_INFO,"godot","pre asdasd setup...");
+ Error err = Main::setup("apk",2,args);
+#else
+ Error err = Main::setup("apk",0,NULL);
+#endif
+ if (err!=OK) {
+ __android_log_print(ANDROID_LOG_INFO,"godot","*****UNABLE TO SETUP");
+
+ return; //should exit instead and print the error
+ }
+
+ __android_log_print(ANDROID_LOG_INFO,"godot","**START");
+
+
+ if (!Main::start()) {
+
+ return; //should exit instead and print the error
+ }
+ input_mutex=Mutex::create();
+
+ os_android->main_loop_begin();
+
+
+}
+
+JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_step(JNIEnv * env, jobject obj)
+{
+
+ __android_log_print(ANDROID_LOG_INFO,"godot","**STEP EVENT! - %p-%i\n",env,Thread::get_caller_ID());
+
+
+
+
+ {
+
+ FileAccessJAndroid::update_env(env);
+ DirAccessJAndroid::update_env(env);
+ }
+
+ input_mutex->lock();
+
+ while(pointer_events.size()) {
+
+ JAndroidPointerEvent jpe=pointer_events.front()->get();
+ os_android->process_touch(jpe.what,jpe.pointer,jpe.points);
+ pointer_events.pop_front();
+ }
+
+ input_mutex->unlock();
+
+
+ if (os_android->main_loop_iterate()==true) {
+
+ return; //should exit instead
+ }
+
+
+}
+
+JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_touch(JNIEnv * env, jobject obj, jint ev,jint pointer, jint count, jintArray positions) {
+
+
+
+ __android_log_print(ANDROID_LOG_INFO,"godot","**TOUCH EVENT! - %p-%i\n",env,Thread::get_caller_ID());
+
+
+
+
+
+ Vector<OS_Android::TouchPos> points;
+ for(int i=0;i<count;i++) {
+
+ jint p[3];
+ env->GetIntArrayRegion(positions,i*3,3,p);
+ OS_Android::TouchPos tp;
+ tp.pos=Point2(p[1],p[2]);
+ tp.id=p[0];
+ points.push_back(tp);
+ }
+
+ JAndroidPointerEvent jpe;
+ jpe.pointer=pointer;
+ jpe.points=points;
+ jpe.what=ev;
+
+ input_mutex->lock();
+
+ pointer_events.push_back(jpe);
+
+ input_mutex->unlock();
+ //if (os_android)
+// os_android->process_touch(ev,pointer,points);
+
+}
+
+//Main::cleanup();
+
+//return os.get_exit_code();