Fix:Core:Correct layering of android surfaces
[navit-package] / navit / android.c
index 5ff1b25..ac58d38 100644 (file)
@@ -1,7 +1,9 @@
 #include <string.h>
+#include <poll.h>
 #include "android.h"
 #include <android/log.h>
 #include "debug.h"
+#include "event.h"
 #include "callback.h"
 
 JNIEnv *jnienv;
@@ -52,10 +54,10 @@ Java_org_navitproject_navit_Navit_NavitMain( JNIEnv* env, jobject thiz, jobject
        android_activity=activity;
        (*jnienv)->NewGlobalRef(jnienv, activity);
        langstr=(*env)->GetStringUTFChars(env, lang, NULL);
-       setenv("LANG",langstr,1);
        dbg(0,"enter env=%p thiz=%p activity=%p lang=%s\n",env,thiz,activity,langstr);
+       setenv("LANG",langstr,1);
        (*env)->ReleaseStringUTFChars(env, lang, langstr);
-       main(1, strings);
+       main_real(1, strings);
 }
 
 JNIEXPORT void JNICALL
@@ -69,7 +71,7 @@ Java_org_navitproject_navit_NavitGraphics_SizeChangedCallback( JNIEnv* env, jobj
 JNIEXPORT void JNICALL
 Java_org_navitproject_navit_NavitGraphics_ButtonCallback( JNIEnv* env, jobject thiz, int id, int pressed, int button, int x, int y)
 {
-       dbg(0,"enter %p %d %d\n",(struct callback *)id,pressed,button);
+       dbg(1,"enter %p %d %d\n",(struct callback *)id,pressed,button);
        if (id)
                callback_call_4((struct callback *)id,pressed,button,x,y);
 }
@@ -77,17 +79,29 @@ Java_org_navitproject_navit_NavitGraphics_ButtonCallback( JNIEnv* env, jobject t
 JNIEXPORT void JNICALL
 Java_org_navitproject_navit_NavitGraphics_MotionCallback( JNIEnv* env, jobject thiz, int id, int x, int y)
 {
-       dbg(0,"enter %p %d %d\n",(struct callback *)id,x,y);
+       dbg(1,"enter %p %d %d\n",(struct callback *)id,x,y);
        if (id)
                callback_call_2((struct callback *)id,x,y);
 }
 
 JNIEXPORT void JNICALL
+Java_org_navitproject_navit_NavitGraphics_KeypressCallback( JNIEnv* env, jobject thiz, int id, jobject str)
+{
+       char *s;
+       dbg(0,"enter %p %p\n",(struct callback *)id,str);
+       s=(*env)->GetStringUTFChars(env, str, NULL);
+       dbg(0,"key=%s\n",s);
+       if (id)
+               callback_call_1((struct callback *)id,s);
+       (*env)->ReleaseStringUTFChars(env, str, s);
+}
+
+JNIEXPORT void JNICALL
 Java_org_navitproject_navit_NavitTimeout_TimeoutCallback( JNIEnv* env, jobject thiz, int delete, int id)
 {
        dbg(1,"enter %p %d %p\n",thiz, delete, (void *)id);
        callback_call_0((struct callback *)id);
-       if (delete)
+       if (delete) 
                (*jnienv)->DeleteGlobalRef(jnienv, thiz);
 }
 
@@ -104,3 +118,42 @@ Java_org_navitproject_navit_NavitIdle_IdleCallback( JNIEnv* env, jobject thiz, i
        callback_call_0((struct callback *)id);
 }
 
+JNIEXPORT void JNICALL
+Java_org_navitproject_navit_NavitWatch_poll( JNIEnv* env, jobject thiz, int fd, int cond)
+{
+       struct pollfd pfd;
+       pfd.fd=fd;
+       dbg(1,"%p poll called for %d %d\n",env, fd, cond);
+       switch ((enum event_watch_cond)cond) {
+       case event_watch_cond_read:
+               pfd.events=POLLIN;
+               break;
+       case event_watch_cond_write:
+               pfd.events=POLLOUT;
+               break;
+       case event_watch_cond_except:
+               pfd.events=POLLERR;
+               break;
+       default:
+               pfd.events=0;
+       }
+       pfd.revents=0;
+       poll(&pfd, 1, -1);
+}
+
+JNIEXPORT void JNICALL
+Java_org_navitproject_navit_NavitWatch_WatchCallback( JNIEnv* env, jobject thiz, int id)
+{
+       dbg(1,"enter %p %p\n",thiz, (void *)id);
+       callback_call_0((struct callback *)id);
+}
+
+
+JNIEXPORT void JNICALL
+Java_org_navitproject_navit_NavitSensors_SensorCallback( JNIEnv* env, jobject thiz, int id, int sensor, float x, float y, float z)
+{
+       dbg(1,"enter %p %p %f %f %f\n",thiz, (void *)id,x,y,z);
+       callback_call_4((struct callback *)id, sensor, &x, &y, &z);
+}
+
+