|
@@ -35,10 +35,11 @@ namespace lol |
|
|
{ |
|
|
{ |
|
|
JavaVM *g_vm; |
|
|
JavaVM *g_vm; |
|
|
jobject g_activity; |
|
|
jobject g_activity; |
|
|
|
|
|
Queue<int> g_main_queue; |
|
|
Thread *g_main_thread; |
|
|
Thread *g_main_thread; |
|
|
|
|
|
|
|
|
AndroidApp::AndroidApp(char const *title, ivec2 res, float fps) : |
|
|
|
|
|
data(0) |
|
|
|
|
|
|
|
|
AndroidApp::AndroidApp(char const *title, ivec2 res, float fps) |
|
|
|
|
|
: data(0) |
|
|
{ |
|
|
{ |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@@ -46,12 +47,20 @@ void AndroidApp::ShowPointer(bool show) |
|
|
{ |
|
|
{ |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* This is a fake Run() method. We just wait until we're called and |
|
|
|
|
|
* signal nativeInit() that all the user's initialisation code was |
|
|
|
|
|
* called. Then we sit here forever, the Java layer is in charge of |
|
|
|
|
|
* calling TickDraw(). */ |
|
|
void AndroidApp::Run() |
|
|
void AndroidApp::Run() |
|
|
{ |
|
|
{ |
|
|
|
|
|
g_main_queue.Push(1); |
|
|
|
|
|
|
|
|
while (!Ticker::Finished()) |
|
|
while (!Ticker::Finished()) |
|
|
{ |
|
|
{ |
|
|
/* Tick the renderer, show the frame and clamp to desired framerate. */ |
|
|
|
|
|
Ticker::TickDraw(); |
|
|
|
|
|
|
|
|
/* Do nothing while the real render thread does the job. The |
|
|
|
|
|
* real stuff happens in nativeRender() */ |
|
|
|
|
|
Timer t; |
|
|
|
|
|
t.Wait(0.5f); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@@ -85,6 +94,7 @@ JNI_OnLoad(JavaVM* vm, void* reserved) |
|
|
extern "C" void |
|
|
extern "C" void |
|
|
Java_org_zoy_LolEngine_LolActivity_nativeInit(JNIEnv* env, jobject thiz) |
|
|
Java_org_zoy_LolEngine_LolActivity_nativeInit(JNIEnv* env, jobject thiz) |
|
|
{ |
|
|
{ |
|
|
|
|
|
Log::Info("Java layer initialising activity"); |
|
|
env->NewGlobalRef(thiz); /* FIXME: never released! */ |
|
|
env->NewGlobalRef(thiz); /* FIXME: never released! */ |
|
|
g_activity = thiz; |
|
|
g_activity = thiz; |
|
|
} |
|
|
} |
|
@@ -92,18 +102,19 @@ Java_org_zoy_LolEngine_LolActivity_nativeInit(JNIEnv* env, jobject thiz) |
|
|
extern "C" void |
|
|
extern "C" void |
|
|
Java_org_zoy_LolEngine_LolRenderer_nativeInit(JNIEnv* env) |
|
|
Java_org_zoy_LolEngine_LolRenderer_nativeInit(JNIEnv* env) |
|
|
{ |
|
|
{ |
|
|
Log::Info("initialising renderer"); |
|
|
|
|
|
|
|
|
Log::Info("Java layer initialising renderer"); |
|
|
Ticker::Setup(30.0f); |
|
|
Ticker::Setup(30.0f); |
|
|
Video::Setup(ivec2(320, 200)); |
|
|
Video::Setup(ivec2(320, 200)); |
|
|
|
|
|
|
|
|
g_main_thread = new Thread(lol::AndroidApp::MainRun, NULL);; |
|
|
g_main_thread = new Thread(lol::AndroidApp::MainRun, NULL);; |
|
|
|
|
|
g_main_queue.Pop(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
extern "C" void |
|
|
extern "C" void |
|
|
Java_org_zoy_LolEngine_LolRenderer_nativeResize(JNIEnv* env, jobject thiz, |
|
|
Java_org_zoy_LolEngine_LolRenderer_nativeResize(JNIEnv* env, jobject thiz, |
|
|
jint w, jint h) |
|
|
jint w, jint h) |
|
|
{ |
|
|
{ |
|
|
Log::Info("resizing to %i x %i", w, h); |
|
|
|
|
|
|
|
|
Log::Info("Java layer resizing to %i x %i", w, h); |
|
|
Video::Setup(ivec2(w, h)); |
|
|
Video::Setup(ivec2(w, h)); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|