X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Fcore%2Fandroid%2Fmainthread.cpp;h=7219cdf2fdd9ef1476072f90aac28a1364beb776;hp=e07c837bcfdb15706f33e62baa98eeb1b82b26db;hb=e2b5cb6cd61bf8c6f56f624cc835233df92288da;hpb=dd997d45dd774b1d6734a19c6eb6efdd6be14234 diff --git a/source/core/android/mainthread.cpp b/source/core/android/mainthread.cpp index e07c837..7219cdf 100644 --- a/source/core/android/mainthread.cpp +++ b/source/core/android/mainthread.cpp @@ -10,19 +10,25 @@ namespace Msp { namespace Android { MainThread::MainThread(ANativeActivity *a): - activity(a), + asset_manager(a->assetManager), + int_data_path(a->internalDataPath), starting_up(true) { + attach_to_activity(a); + startup_mutex.lock(); + launch(); +} + +void MainThread::attach_to_activity(ANativeActivity *a) +{ + activity = a; + activity->callbacks->onDestroy = &activity_destroyed; activity->callbacks->onNativeWindowCreated = &native_window_created; activity->callbacks->onNativeWindowResized = &native_window_resized; activity->callbacks->onNativeWindowDestroyed = &native_window_destroyed; activity->callbacks->onInputQueueCreated = &input_queue_created; activity->callbacks->onInputQueueDestroyed = &input_queue_destroyed; activity->instance = this; - - startup_mutex.lock(); - - launch(); } void MainThread::wait_for_app_created() @@ -48,7 +54,8 @@ void MainThread::main() Msp::Android::ErrorLogger err_logger; Msp::Application::run(1, argv, this, &app_created); free(appname); - ANativeActivity_finish(activity); + if(activity) + ANativeActivity_finish(activity); } void MainThread::app_created(void *data) @@ -56,6 +63,11 @@ void MainThread::app_created(void *data) reinterpret_cast(data)->resume_startup(); } +void MainThread::activity_destroyed(ANativeActivity *activity) +{ + reinterpret_cast(activity->instance)->activity = 0; +} + void MainThread::native_window_created(ANativeActivity *activity, ANativeWindow *window) { reinterpret_cast(activity->instance)->signal_native_window_created.emit(window);