+ if(activity)
+ {
+ activity->callbacks->onDestroy = &end_process;
+ ANativeActivity_finish(activity);
+ }
+ else
+ end_process(0);
+}
+
+void MainThread::app_created(void *data)
+{
+ reinterpret_cast<MainThread *>(data)->resume_startup();
+}
+
+void MainThread::activity_destroyed(ANativeActivity *activity)
+{
+ reinterpret_cast<MainThread *>(activity->instance)->activity = 0;
+}
+
+void MainThread::native_window_created(ANativeActivity *activity, ANativeWindow *window)
+{
+ reinterpret_cast<MainThread *>(activity->instance)->signal_native_window_created.emit(window);
+}
+
+void MainThread::native_window_resized(ANativeActivity *activity, ANativeWindow *window)
+{
+ reinterpret_cast<MainThread *>(activity->instance)->signal_native_window_resized.emit(window);
+}
+
+void MainThread::native_window_destroyed(ANativeActivity *activity, ANativeWindow *window)
+{
+ reinterpret_cast<MainThread *>(activity->instance)->signal_native_window_destroyed.emit(window);
+}
+
+void MainThread::input_queue_created(ANativeActivity *activity, AInputQueue *queue)
+{
+ reinterpret_cast<MainThread *>(activity->instance)->signal_input_queue_created.emit(queue);
+}
+
+void MainThread::input_queue_destroyed(ANativeActivity *activity, AInputQueue *queue)
+{
+ reinterpret_cast<MainThread *>(activity->instance)->signal_input_queue_destroyed.emit(queue);
+}
+
+void MainThread::end_process(ANativeActivity *)
+{
+ exit(0);