static void onDestroy(JNIEnv env, jobject obj)
        {
            // 1988
            appThread.MessageQueue.ovrMessageQueue_PostMessageThenWait(MESSAGE.MESSAGE_ON_DESTROY);

            appThread.MessageQueue.ovrMessageQueue_Enable(false);

            appThread.ovrAppThread_Destroy(env);
            stdlib_h.free(appThread);
            appThread = null;

            ConsoleExtensions.trace("exit onDestroy");
        }
        // named pointers! typedefs!
        static ovrAppThreadPointer onCreate(JNIEnv env, jobject obj, jobject activity)
        {
            // 1937
            ConsoleExtensions.trace("enter onCreate");


            //I/xNativeActivity(24015): \GLES3JNILib.cs:322 alloca# 0.000000
            //I/xNativeActivity(24015): \GLES3JNILib.cs:322 alloca# -4482497940269729854931310573780992.000000
            //I/xNativeActivity(24015): \GLES3JNILib.cs:322 alloca# -112522782313195449178724042276864.000000
            //I/xNativeActivity(24015): \GLES3JNILib.cs:322 alloca# -112561990195377190832118112976896.000000
            //I/xNativeActivity(24015): \GLES3JNILib.cs:322 alloca# 0.000000
            //I/xNativeActivity(24015): \GLES3JNILib.cs:322 alloca# -112309334370484290251637919842304.000000
            //I/xNativeActivity(24015): \GLES3JNILib.cs:322 alloca# -112521273573772570121514008969216.000000
            //I/xNativeActivity(24015): \GLES3JNILib.cs:322 alloca# -112522782313195449178724042276864.000000
            //I/xNativeActivity(24015): \GLES3JNILib.cs:322 alloca# 0.000000
            //I/xNativeActivity(24015): \GLES3JNILib.cs:322 alloca# -112561990195377190832118112976896.000000
            //I/xNativeActivity(24015): \GLES3JNILib.cs:322 alloca# 0.000000
            //I/xNativeActivity(24015): \GLES3JNILib.cs:322 alloca# -4419917904888785132619678770790400.000000
            //I/xNativeActivity(24015): \GLES3JNILib.cs:322 alloca# 0.000000
            //I/xNativeActivity(24015): \GLES3JNILib.cs:322 alloca# -4442953183654797667429932949569536.000000
            //I/xNativeActivity(24015): \GLES3JNILib.cs:322 alloca# -112522134328956135737486399766528.000000
            //I/xNativeActivity(24015): \GLES3JNILib.cs:322 alloca# nan

            //var alloca = stackalloc float[16];

            //for (int i = 0; i < 16; i++)
            //{
            //    ConsoleExtensions.tracef("alloca#", alloca[i]);

            //    alloca[i] = i;

            //    ConsoleExtensions.tracef("alloca0", alloca[i]);
            //}


            appThread = new VrCubeWorld.ovrAppThread(env, activity);

            // set property?
            appThread.MessageQueue.ovrMessageQueue_Enable(true);
            appThread.MessageQueue.ovrMessageQueue_PostMessageThenWait(MESSAGE.MESSAGE_ON_CREATE);

            return appThread;
        }