private static void OnKeyboardCallback(IntPtr closure, GvrKeyboardEvent keyboardEvent) { lock (callbacksLock) { threadSafeCallbacks.Add(keyboardEvent); } }
IEnumerator Executer() { while (true) { yield return(new WaitForSeconds(kExecuterWait)); while (threadSafeCallbacks.Count > 0) { GvrKeyboardEvent keyboardEvent = threadSafeCallbacks[0]; PoolKeyboardCallbacks(keyboardEvent); lock (callbacksLock) { threadSafeCallbacks.RemoveAt(0); } } } }
private void PoolKeyboardCallbacks(GvrKeyboardEvent keyboardEvent) { switch (keyboardEvent) { case GvrKeyboardEvent.GVR_KEYBOARD_ERROR_UNKNOWN: errorCallback(GvrKeyboardError.UNKNOWN); break; case GvrKeyboardEvent.GVR_KEYBOARD_ERROR_SERVICE_NOT_CONNECTED: errorCallback(GvrKeyboardError.SERVICE_NOT_CONNECTED); break; case GvrKeyboardEvent.GVR_KEYBOARD_ERROR_NO_LOCALES_FOUND: errorCallback(GvrKeyboardError.NO_LOCALES_FOUND); break; case GvrKeyboardEvent.GVR_KEYBOARD_ERROR_SDK_LOAD_FAILED: errorCallback(GvrKeyboardError.SDK_LOAD_FAILED); break; case GvrKeyboardEvent.GVR_KEYBOARD_SHOWN: showCallback(); break; case GvrKeyboardEvent.GVR_KEYBOARD_HIDDEN: hideCallback(); break; case GvrKeyboardEvent.GVR_KEYBOARD_TEXT_UPDATED: updateCallback(keyboardProvider.EditorText); break; case GvrKeyboardEvent.GVR_KEYBOARD_TEXT_COMMITTED: enterCallback(keyboardProvider.EditorText); break; } }