Fix for Geolocation webTCT failures
[platform/framework/web/chromium-efl.git] / third_party / gvr-android-sdk / gvr_api_jni.h
1 // Copyright 2014 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // This file is of the same format as file that generated by
6 //     base/android/jni_generator/jni_generator.py
7 // For
8 //     com/google/vr/ndk/base/GvrApi
9
10 // Local modification includes:
11 // 1. Remove all implementation, only keep definition.
12 // 2. Use absolute path instead of relative path.
13 // 3. Removed all helper functions such as: Create.
14 // 4. Removed external functions that don't have implementation in shim file.
15 // 5. Changed RectF, Point, and PoseTracker to correct package name.
16 // 6. Added function RegisterGvrApiNatives at the end of this file.
17 // 7. Added "vr" as an argument to base::android::LazyGetClass.
18
19 #ifndef com_google_vr_ndk_base_GvrApi_JNI
20 #define com_google_vr_ndk_base_GvrApi_JNI
21
22 #include "base/android/jni_android.h"
23 // ----------------------------------------------------------------------------
24 // Native JNI methods
25 // ----------------------------------------------------------------------------
26 #include <jni.h>
27 #include <atomic>
28 #include <type_traits>
29
30 #include "third_party/jni_zero/jni_int_wrapper.h"
31 #include "third_party/jni_zero/jni_zero_helper.h"
32
33 // Step 1: forward declarations.
34 namespace {
35 const char kGvrApiClassPath[] = "com/google/vr/ndk/base/GvrApi";
36 // Leaking this jclass as we cannot use LazyInstance from some threads.
37 std::atomic<jclass> g_GvrApi_clazz __attribute__((unused)) (nullptr);
38 #define GvrApi_clazz(env) \
39   base::android::LazyGetClass(env, kGvrApiClassPath, "vr", &g_GvrApi_clazz)
40
41 }  // namespace
42
43 namespace GvrApi {
44 // Step 2: method stubs.
45
46 JNI_BOUNDARY_EXPORT jlong
47 Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportListCreate(
48     JNIEnv* env,
49     jobject jcaller,
50     jlong nativeGvrContext);
51
52 JNI_BOUNDARY_EXPORT void
53 Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportListDestroy(
54     JNIEnv* env,
55     jclass jcaller,
56     jlong nativeBufferViewportList);
57
58 JNI_BOUNDARY_EXPORT jint
59 Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportListGetSize(
60     JNIEnv* env,
61     jclass jcaller,
62     jlong nativeBufferViewportList);
63
64 JNI_BOUNDARY_EXPORT void
65 Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportListGetItem(
66     JNIEnv* env,
67     jclass jcaller,
68     jlong nativeBufferViewportList,
69     jint index,
70     jlong nativeBufferViewport);
71
72 JNI_BOUNDARY_EXPORT void
73 Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportListSetItem(
74     JNIEnv* env,
75     jclass jcaller,
76     jlong nativeBufferViewportList,
77     jint index,
78     jlong nativeBufferViewport);
79
80 JNI_BOUNDARY_EXPORT jlong
81 Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportCreate(
82     JNIEnv* env,
83     jclass jcaller,
84     jlong nativeGvrContext);
85
86 JNI_BOUNDARY_EXPORT void
87 Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportDestroy(
88     JNIEnv* env,
89     jclass jcaller,
90     jlong nativeBufferViewport);
91
92 JNI_BOUNDARY_EXPORT void
93 Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportGetSourceUv(
94     JNIEnv* env,
95     jclass jcaller,
96     jlong nativeBufferViewport,
97     jobject out);
98
99 JNI_BOUNDARY_EXPORT void
100 Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportSetSourceUv(
101     JNIEnv* env,
102     jclass jcaller,
103     jlong nativeBufferViewport,
104     jfloat left,
105     jfloat top,
106     jfloat right,
107     jfloat bottom);
108
109 JNI_BOUNDARY_EXPORT void
110 Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportGetSourceFov(
111     JNIEnv* env,
112     jclass jcaller,
113     jlong nativeBufferViewport,
114     jobject out);
115
116 JNI_BOUNDARY_EXPORT void
117 Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportSetSourceFov(
118     JNIEnv* env,
119     jclass jcaller,
120     jlong nativeBufferViewport,
121     jfloat left,
122     jfloat top,
123     jfloat right,
124     jfloat bottom);
125
126 JNI_BOUNDARY_EXPORT void
127 Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportGetTransform(
128     JNIEnv* env,
129     jclass jcaller,
130     jlong nativeBufferViewport,
131     jfloatArray matrix);
132
133 JNI_BOUNDARY_EXPORT void
134 Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportSetTransform(
135     JNIEnv* env,
136     jclass jcaller,
137     jlong nativeBufferViewport,
138     jfloatArray matrix);
139
140 JNI_BOUNDARY_EXPORT jboolean
141 Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportEqual(JNIEnv* env,
142                                                              jclass jcaller,
143                                                              jlong nativeA,
144                                                              jlong nativeB);
145
146 JNI_BOUNDARY_EXPORT jint
147 Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportGetTargetEye(
148     JNIEnv* env,
149     jclass jcaller,
150     jlong nativeBufferViewport);
151
152 JNI_BOUNDARY_EXPORT void
153 Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportSetTargetEye(
154     JNIEnv* env,
155     jclass jcaller,
156     jlong nativeBufferViewport,
157     jint eye);
158
159 JNI_BOUNDARY_EXPORT jint
160 Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportGetSourceBufferIndex(
161     JNIEnv* env,
162     jclass jcaller,
163     jlong nativeBufferViewport);
164
165 JNI_BOUNDARY_EXPORT void
166 Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportSetSourceBufferIndex(
167     JNIEnv* env,
168     jclass jcaller,
169     jlong nativeBufferViewport,
170     jint index);
171
172 JNI_BOUNDARY_EXPORT jint
173 Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportGetExternalSurfaceId(
174     JNIEnv* env,
175     jclass jcaller,
176     jlong nativeBufferViewport);
177
178 JNI_BOUNDARY_EXPORT void
179 Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportSetExternalSurfaceId(
180     JNIEnv* env,
181     jclass jcaller,
182     jlong nativeBufferViewport,
183     jint id);
184
185 JNI_BOUNDARY_EXPORT void
186 Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportSetExternalSurface(
187     JNIEnv* env,
188     jclass jcaller,
189     jlong nativeBufferViewport,
190     jlong nativeExternalSurface);
191
192 JNI_BOUNDARY_EXPORT jint
193 Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportGetReprojection(
194     JNIEnv* env,
195     jclass jcaller,
196     jlong nativeBufferViewport);
197
198 JNI_BOUNDARY_EXPORT void
199 Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportSetReprojection(
200     JNIEnv* env,
201     jclass jcaller,
202     jlong nativeBufferViewport,
203     jint reprojection);
204
205 JNI_BOUNDARY_EXPORT void
206 Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportSetSourceLayer(
207     JNIEnv* env,
208     jclass jcaller,
209     jlong nativeBufferViewport,
210     jint layerIndex);
211
212 JNI_BOUNDARY_EXPORT jlong
213 Java_com_google_vr_ndk_base_GvrApi_nativeBufferSpecCreate(
214     JNIEnv* env,
215     jclass jcaller,
216     jlong nativeGvrContext);
217
218 JNI_BOUNDARY_EXPORT void
219 Java_com_google_vr_ndk_base_GvrApi_nativeBufferSpecDestroy(
220     JNIEnv* env,
221     jclass jcaller,
222     jlong nativeBufferSpec);
223
224 JNI_BOUNDARY_EXPORT void
225 Java_com_google_vr_ndk_base_GvrApi_nativeBufferSpecGetSize(
226     JNIEnv* env,
227     jclass jcaller,
228     jlong nativeBufferSpec,
229     jobject size);
230
231 JNI_BOUNDARY_EXPORT void
232 Java_com_google_vr_ndk_base_GvrApi_nativeBufferSpecSetSize(
233     JNIEnv* env,
234     jclass jcaller,
235     jlong nativeBufferSpec,
236     jint width,
237     jint height);
238
239 JNI_BOUNDARY_EXPORT void
240 Java_com_google_vr_ndk_base_GvrApi_nativeBufferSpecSetColorFormat(
241     JNIEnv* env,
242     jclass jcaller,
243     jlong nativeBufferSpec,
244     jint format);
245
246 JNI_BOUNDARY_EXPORT void
247 Java_com_google_vr_ndk_base_GvrApi_nativeBufferSpecSetDepthStencilFormat(
248     JNIEnv* env,
249     jclass jcaller,
250     jlong nativeBufferSpec,
251     jint format);
252
253 JNI_BOUNDARY_EXPORT void
254 Java_com_google_vr_ndk_base_GvrApi_nativeBufferSpecSetMultiviewLayers(
255     JNIEnv* env,
256     jclass jcaller,
257     jlong nativeBufferSpec,
258     jint numLayers);
259
260 JNI_BOUNDARY_EXPORT jint
261 Java_com_google_vr_ndk_base_GvrApi_nativeBufferSpecGetSamples(
262     JNIEnv* env,
263     jclass jcaller,
264     jlong nativeBufferSpec);
265
266 JNI_BOUNDARY_EXPORT void
267 Java_com_google_vr_ndk_base_GvrApi_nativeBufferSpecSetSamples(
268     JNIEnv* env,
269     jclass jcaller,
270     jlong nativeBufferSpec,
271     jint samples);
272
273 JNI_BOUNDARY_EXPORT jlong
274 Java_com_google_vr_ndk_base_GvrApi_nativeExternalSurfaceCreateWithListeners(
275     JNIEnv* env,
276     jclass jcaller,
277     jlong nativeGvrContext,
278     jobject surfaceListener,
279     jobject frameListener,
280     jobject handler);
281
282 JNI_BOUNDARY_EXPORT void
283 Java_com_google_vr_ndk_base_GvrApi_nativeExternalSurfaceDestroy(
284     JNIEnv* env,
285     jclass jcaller,
286     jlong nativeBufferSpec);
287
288 JNI_BOUNDARY_EXPORT jint
289 Java_com_google_vr_ndk_base_GvrApi_nativeExternalSurfaceGetId(
290     JNIEnv* env,
291     jclass jcaller,
292     jlong nativeBufferSpec);
293
294 JNI_BOUNDARY_EXPORT jobject
295 Java_com_google_vr_ndk_base_GvrApi_nativeExternalSurfaceGetSurface(
296     JNIEnv* env,
297     jclass jcaller,
298     jlong nativeBufferSpec);
299
300 JNI_BOUNDARY_EXPORT jlong
301 Java_com_google_vr_ndk_base_GvrApi_nativeSwapChainCreate(JNIEnv* env,
302                                                          jclass jcaller,
303                                                          jlong nativeContext,
304                                                          jlongArray specs);
305
306 JNI_BOUNDARY_EXPORT void
307 Java_com_google_vr_ndk_base_GvrApi_nativeSwapChainDestroy(JNIEnv* env,
308                                                           jclass jcaller,
309                                                           jlong nativeContext);
310
311 JNI_BOUNDARY_EXPORT jint
312 Java_com_google_vr_ndk_base_GvrApi_nativeSwapChainGetBufferCount(
313     JNIEnv* env,
314     jclass jcaller,
315     jlong nativeSwapChain);
316
317 JNI_BOUNDARY_EXPORT void
318 Java_com_google_vr_ndk_base_GvrApi_nativeSwapChainGetBufferSize(
319     JNIEnv* env,
320     jclass jcaller,
321     jlong nativeSwapChain,
322     jint bufferIndex,
323     jobject size);
324
325 JNI_BOUNDARY_EXPORT void
326 Java_com_google_vr_ndk_base_GvrApi_nativeSwapChainResizeBuffer(
327     JNIEnv* env,
328     jclass jcaller,
329     jlong nativeSwapChain,
330     jint bufferIndex,
331     jint width,
332     jint height);
333
334 JNI_BOUNDARY_EXPORT jlong
335 Java_com_google_vr_ndk_base_GvrApi_nativeSwapChainAcquireFrame(
336     JNIEnv* env,
337     jclass jcaller,
338     jlong nativeSwapChain);
339
340 JNI_BOUNDARY_EXPORT void
341 Java_com_google_vr_ndk_base_GvrApi_nativeFrameBindBuffer(JNIEnv* env,
342                                                          jclass jcaller,
343                                                          jlong nativeFrame,
344                                                          jint bufferIndex);
345
346 JNI_BOUNDARY_EXPORT void Java_com_google_vr_ndk_base_GvrApi_nativeFrameUnbind(
347     JNIEnv* env,
348     jclass jcaller,
349     jlong nativeFrame);
350
351 JNI_BOUNDARY_EXPORT jint
352 Java_com_google_vr_ndk_base_GvrApi_nativeFrameGetFramebufferObject(
353     JNIEnv* env,
354     jclass jcaller,
355     jlong nativeFrame,
356     jint bufferIndex);
357
358 JNI_BOUNDARY_EXPORT void
359 Java_com_google_vr_ndk_base_GvrApi_nativeFrameGetBufferSize(JNIEnv* env,
360                                                             jclass jcaller,
361                                                             jlong nativeFrame,
362                                                             jint bufferIndex,
363                                                             jobject size);
364
365 JNI_BOUNDARY_EXPORT void Java_com_google_vr_ndk_base_GvrApi_nativeFrameSubmit(
366     JNIEnv* env,
367     jclass jcaller,
368     jlong nativeFrame,
369     jlong nativeBufferViewportList,
370     jfloatArray headSpaceFromStartSpace);
371
372 JNI_BOUNDARY_EXPORT jboolean
373 Java_com_google_vr_ndk_base_GvrApi_nativeUsingDynamicLibrary(JNIEnv* env,
374                                                              jclass jcaller);
375
376 JNI_BOUNDARY_EXPORT jboolean
377 Java_com_google_vr_ndk_base_GvrApi_nativeUsingShimLibrary(JNIEnv* env,
378                                                           jclass jcaller);
379
380 JNI_BOUNDARY_EXPORT void
381 Java_com_google_vr_ndk_base_GvrApi_nativeSetApplicationState(JNIEnv* env,
382                                                              jclass jcaller,
383                                                              jclass classLoader,
384                                                              jobject context);
385
386 JNI_BOUNDARY_EXPORT void
387 Java_com_google_vr_ndk_base_GvrApi_nativeSetDynamicLibraryLoadingEnabled(
388     JNIEnv* env,
389     jclass jcaller,
390     jboolean enabled);
391
392 JNI_BOUNDARY_EXPORT jlong Java_com_google_vr_ndk_base_GvrApi_nativeCreate(
393     JNIEnv* env,
394     jobject jcaller,
395     jclass classLoader,
396     jobject context,
397     jlong synchronizer,
398     jint widthPixels,
399     jint heightPixels,
400     jfloat xDpi,
401     jfloat yDpi,
402     jobject optionalPoseTrackingForTesting);
403
404 JNI_BOUNDARY_EXPORT void
405 Java_com_google_vr_ndk_base_GvrApi_nativeRequestContextSharing(
406     JNIEnv* env,
407     jobject jcaller,
408     jlong nativeGvrContext,
409     jobject eglListener);
410
411 JNI_BOUNDARY_EXPORT jint
412 Java_com_google_vr_ndk_base_GvrApi_nativeGetError(JNIEnv* env,
413                                                   jobject jcaller,
414                                                   jlong nativeGvrContext);
415
416 JNI_BOUNDARY_EXPORT jint
417 Java_com_google_vr_ndk_base_GvrApi_nativeClearError(JNIEnv* env,
418                                                     jobject jcaller,
419                                                     jlong nativeGvrContext);
420
421 JNI_BOUNDARY_EXPORT jstring
422 Java_com_google_vr_ndk_base_GvrApi_nativeGetErrorString(JNIEnv* env,
423                                                         jclass jcaller,
424                                                         jint errorCode);
425
426 JNI_BOUNDARY_EXPORT jlong
427 Java_com_google_vr_ndk_base_GvrApi_nativeGetUserPrefs(JNIEnv* env,
428                                                       jobject jcaller,
429                                                       jlong nativeGvrContext);
430
431 JNI_BOUNDARY_EXPORT jint
432 Java_com_google_vr_ndk_base_GvrApi_nativeUserPrefsGetControllerHandedness(
433     JNIEnv* env,
434     jclass jcaller,
435     jlong nativeUserPrefs);
436
437 JNI_BOUNDARY_EXPORT void Java_com_google_vr_ndk_base_GvrApi_nativePause(
438     JNIEnv* env,
439     jobject jcaller,
440     jlong nativeGvrContext);
441
442 JNI_BOUNDARY_EXPORT void Java_com_google_vr_ndk_base_GvrApi_nativeResume(
443     JNIEnv* env,
444     jobject jcaller,
445     jlong nativeGvrContext);
446
447 JNI_BOUNDARY_EXPORT void
448 Java_com_google_vr_ndk_base_GvrApi_nativeReleaseGvrContext(
449     JNIEnv* env,
450     jobject jcaller,
451     jlong nativeGvrContext);
452
453 JNI_BOUNDARY_EXPORT void Java_com_google_vr_ndk_base_GvrApi_nativeInitializeGl(
454     JNIEnv* env,
455     jobject jcaller,
456     jlong nativeGvrContext);
457
458 JNI_BOUNDARY_EXPORT void
459 Java_com_google_vr_ndk_base_GvrApi_nativeOnSurfaceCreatedReprojectionThread(
460     JNIEnv* env,
461     jobject jcaller,
462     jlong nativeGvrContext);
463
464 JNI_BOUNDARY_EXPORT void
465 Java_com_google_vr_ndk_base_GvrApi_nativeOnSurfaceChangedReprojectionThread(
466     JNIEnv* env,
467     jobject jcaller,
468     jlong nativeGvrContext);
469
470 JNI_BOUNDARY_EXPORT void
471 Java_com_google_vr_ndk_base_GvrApi_nativeGetRecommendedBufferViewports(
472     JNIEnv* env,
473     jobject jcaller,
474     jlong nativeGvrContext,
475     jlong nativeBufferViewportList);
476
477 JNI_BOUNDARY_EXPORT void
478 Java_com_google_vr_ndk_base_GvrApi_nativeGetScreenBufferViewports(
479     JNIEnv* env,
480     jobject jcaller,
481     jlong nativeGvrContext,
482     jlong nativeBufferViewportList);
483
484 JNI_BOUNDARY_EXPORT void
485 Java_com_google_vr_ndk_base_GvrApi_nativeGetMaximumEffectiveRenderTargetSize(
486     JNIEnv* env,
487     jobject jcaller,
488     jlong nativeGvrContext,
489     jobject size);
490
491 JNI_BOUNDARY_EXPORT void
492 Java_com_google_vr_ndk_base_GvrApi_nativeGetScreenTargetSize(
493     JNIEnv* env,
494     jobject jcaller,
495     jlong nativeGvrContext,
496     jobject size);
497
498 JNI_BOUNDARY_EXPORT void
499 Java_com_google_vr_ndk_base_GvrApi_nativeDistortToScreen(
500     JNIEnv* env,
501     jobject jcaller,
502     jlong nativeGvrContext,
503     jint textureId,
504     jlong nativeBufferViewportList,
505     jfloatArray headSpaceFromStartSpace,
506     jlong timeNs);
507
508 JNI_BOUNDARY_EXPORT void
509 Java_com_google_vr_ndk_base_GvrApi_nativeSetDefaultFramebufferActive(
510     JNIEnv* env,
511     jobject jcaller,
512     jlong nativeGvrContext);
513
514 JNI_BOUNDARY_EXPORT jobject
515 Java_com_google_vr_ndk_base_GvrApi_nativeRenderReprojectionThread(
516     JNIEnv* env,
517     jobject jcaller,
518     jlong nativeGvrContext);
519
520 JNI_BOUNDARY_EXPORT void
521 Java_com_google_vr_ndk_base_GvrApi_nativeOnPauseReprojectionThread(
522     JNIEnv* env,
523     jobject jcaller,
524     jlong nativeGvrContext);
525
526 JNI_BOUNDARY_EXPORT void
527 Java_com_google_vr_ndk_base_GvrApi_nativeGetHeadSpaceFromStartSpaceRotation(
528     JNIEnv* env,
529     jobject jcaller,
530     jlong nativeGvrContext,
531     jfloatArray outRotation,
532     jlong timeNs);
533
534 JNI_BOUNDARY_EXPORT void
535 Java_com_google_vr_ndk_base_GvrApi_nativeGetHeadSpaceFromStartSpaceTransform(
536     JNIEnv* env,
537     jobject jcaller,
538     jlong nativeGvrContext,
539     jfloatArray outTransform,
540     jlong timeNs);
541
542 JNI_BOUNDARY_EXPORT void
543 Java_com_google_vr_ndk_base_GvrApi_nativeSetIgnoreManualPauseResumeTracker(
544     JNIEnv* env,
545     jobject jcaller,
546     jlong nativeGvrContext,
547     jboolean shouldIgnore);
548
549 JNI_BOUNDARY_EXPORT void Java_com_google_vr_ndk_base_GvrApi_nativePauseTracking(
550     JNIEnv* env,
551     jobject jcaller,
552     jlong nativeGvrContext);
553
554 JNI_BOUNDARY_EXPORT jbyteArray
555 Java_com_google_vr_ndk_base_GvrApi_nativePauseTrackingGetState(
556     JNIEnv* env,
557     jobject jcaller,
558     jlong nativeGvrContext);
559
560 JNI_BOUNDARY_EXPORT void
561 Java_com_google_vr_ndk_base_GvrApi_nativeResumeTracking(JNIEnv* env,
562                                                         jobject jcaller,
563                                                         jlong nativeGvrContext);
564
565 JNI_BOUNDARY_EXPORT void
566 Java_com_google_vr_ndk_base_GvrApi_nativeResumeTrackingSetState(
567     JNIEnv* env,
568     jobject jcaller,
569     jlong nativeGvrContext,
570     jbyteArray trackerStateBytes);
571
572 JNI_BOUNDARY_EXPORT void Java_com_google_vr_ndk_base_GvrApi_nativeResetTracking(
573     JNIEnv* env,
574     jobject jcaller,
575     jlong nativeGvrContext);
576
577 JNI_BOUNDARY_EXPORT void
578 Java_com_google_vr_ndk_base_GvrApi_nativeRecenterTracking(
579     JNIEnv* env,
580     jobject jcaller,
581     jlong nativeGvrContext);
582
583 JNI_BOUNDARY_EXPORT void
584 Java_com_google_vr_ndk_base_GvrApi_nativeGetEyeFromHeadMatrix(
585     JNIEnv* env,
586     jobject jcaller,
587     jlong nativeGvrContext,
588     jint eye,
589     jfloatArray out);
590
591 JNI_BOUNDARY_EXPORT jintArray
592 Java_com_google_vr_ndk_base_GvrApi_nativeGetWindowBounds(
593     JNIEnv* env,
594     jobject jcaller,
595     jlong nativeGvrContext);
596
597 JNI_BOUNDARY_EXPORT jfloatArray
598 Java_com_google_vr_ndk_base_GvrApi_nativeComputeDistortedPoint(
599     JNIEnv* env,
600     jobject jcaller,
601     jlong nativeGvrContext,
602     jint eyeType,
603     jfloatArray uvIn);
604
605 JNI_BOUNDARY_EXPORT jboolean
606 Java_com_google_vr_ndk_base_GvrApi_nativeSetDefaultViewerProfile(
607     JNIEnv* env,
608     jobject jcaller,
609     jlong nativeGvrContext,
610     jstring viewerProfileUri);
611
612 JNI_BOUNDARY_EXPORT jstring
613 Java_com_google_vr_ndk_base_GvrApi_nativeGetViewerVendor(
614     JNIEnv* env,
615     jobject jcaller,
616     jlong nativeGvrContext);
617
618 JNI_BOUNDARY_EXPORT jstring
619 Java_com_google_vr_ndk_base_GvrApi_nativeGetViewerModel(JNIEnv* env,
620                                                         jobject jcaller,
621                                                         jlong nativeGvrContext);
622
623 JNI_BOUNDARY_EXPORT jint
624 Java_com_google_vr_ndk_base_GvrApi_nativeGetViewerType(JNIEnv* env,
625                                                        jobject jcaller,
626                                                        jlong nativeGvrContext);
627
628 JNI_BOUNDARY_EXPORT jboolean
629 Java_com_google_vr_ndk_base_GvrApi_nativeSetAsyncReprojectionEnabled(
630     JNIEnv* env,
631     jobject jcaller,
632     jlong nativeGvrContext,
633     jboolean enabled);
634
635 JNI_BOUNDARY_EXPORT jboolean
636 Java_com_google_vr_ndk_base_GvrApi_nativeGetAsyncReprojectionEnabled(
637     JNIEnv* env,
638     jobject jcaller,
639     jlong nativeGvrContext);
640
641 JNI_BOUNDARY_EXPORT jboolean
642 Java_com_google_vr_ndk_base_GvrApi_nativeIsFeatureSupported(
643     JNIEnv* env,
644     jobject jcaller,
645     jlong nativeGvrContext,
646     jint feature);
647
648 JNI_BOUNDARY_EXPORT void
649 Java_com_google_vr_ndk_base_GvrApi_nativeReconnectSensors(
650     JNIEnv* env,
651     jobject jcaller,
652     jlong nativeGvrContext);
653
654 JNI_BOUNDARY_EXPORT void
655 Java_com_google_vr_ndk_base_GvrApi_nativeSetIdleListener(JNIEnv* env,
656                                                          jobject jcaller,
657                                                          jlong nativeGvrContext,
658                                                          jobject idleListener);
659
660 JNI_BOUNDARY_EXPORT jboolean
661 Java_com_google_vr_ndk_base_GvrApi_nativeSetViewerParams(
662     JNIEnv* env,
663     jobject jcaller,
664     jlong nativeGvrContext,
665     jbyteArray serializedViewerParams);
666
667 JNI_BOUNDARY_EXPORT void
668 Java_com_google_vr_ndk_base_GvrApi_nativeSetDisplayMetrics(
669     JNIEnv* env,
670     jobject jcaller,
671     jlong nativeGvrContext,
672     jint widthPixels,
673     jint heightPixels,
674     jfloat xDpi,
675     jfloat yDpi);
676
677 JNI_BOUNDARY_EXPORT jfloat
678 Java_com_google_vr_ndk_base_GvrApi_nativeGetBorderSizeMeters(
679     JNIEnv* env,
680     jobject jcaller,
681     jlong nativeGvrContext);
682
683 JNI_BOUNDARY_EXPORT void
684 Java_com_google_vr_ndk_base_GvrApi_nativeSetSurfaceSize(
685     JNIEnv* env,
686     jobject jcaller,
687     jlong nativeGvrContext,
688     jint surfaceWidthPixels,
689     jint surfaceHeightPixels);
690
691 JNI_BOUNDARY_EXPORT void Java_com_google_vr_ndk_base_GvrApi_nativeSetLensOffset(
692     JNIEnv* env,
693     jobject jcaller,
694     jlong nativeGvrContext,
695     jfloat x,
696     jfloat y,
697     jfloat rotation);
698
699 JNI_BOUNDARY_EXPORT void Java_com_google_vr_ndk_base_GvrApi_nativeDumpDebugData(
700     JNIEnv* env,
701     jobject jcaller,
702     jlong nativeGvrContext);
703
704 JNI_BOUNDARY_EXPORT jboolean
705 Java_com_google_vr_ndk_base_GvrApi_nativeUsingVrDisplayService(
706     JNIEnv* env,
707     jobject jcaller,
708     jlong nativeGvrContext);
709
710 JNI_BOUNDARY_EXPORT jlong
711 Java_com_google_vr_ndk_base_GvrApi_nativeCreateEvent(JNIEnv* env, jclass clazz);
712
713 JNI_BOUNDARY_EXPORT jlong
714 Java_com_google_vr_ndk_base_GvrApi_nativeCreateValue(JNIEnv* env, jclass clazz);
715
716 JNI_BOUNDARY_EXPORT void Java_com_google_vr_ndk_base_GvrApi_nativeDestroyEvent(
717     JNIEnv* env,
718     jclass clazz,
719     jlong native_object);
720
721 JNI_BOUNDARY_EXPORT void Java_com_google_vr_ndk_base_GvrApi_nativeDestroyValue(
722     JNIEnv* env,
723     jclass clazz,
724     jlong native_object);
725
726 JNI_BOUNDARY_EXPORT jlong
727 Java_com_google_vr_ndk_base_GvrApi_nativeGetCurrentProperties(
728     JNIEnv* env,
729     jobject object,
730     jlong native_object);
731
732 JNI_BOUNDARY_EXPORT jlong
733 Java_com_google_vr_ndk_base_GvrApi_nativeGetEventFlags(JNIEnv* env,
734                                                        jclass clazz,
735                                                        jlong native_object);
736
737 JNI_BOUNDARY_EXPORT jlong
738 Java_com_google_vr_ndk_base_GvrApi_nativeGetEventTimestamp(JNIEnv* env,
739                                                            jclass clazz,
740                                                            jlong native_object);
741
742 JNI_BOUNDARY_EXPORT jint
743 Java_com_google_vr_ndk_base_GvrApi_nativeGetEventType(JNIEnv* env,
744                                                       jclass clazz,
745                                                       jlong native_object);
746
747 JNI_BOUNDARY_EXPORT jboolean
748 Java_com_google_vr_ndk_base_GvrApi_nativeGetProperty(JNIEnv* env,
749                                                      jclass clazz,
750                                                      jlong native_properties,
751                                                      jint property_key,
752                                                      jlong native_value);
753
754 JNI_BOUNDARY_EXPORT jlong
755 Java_com_google_vr_ndk_base_GvrApi_nativeGetRecenterEventFlags(
756     JNIEnv* env,
757     jclass clazz,
758     jlong native_object);
759
760 JNI_BOUNDARY_EXPORT void
761 Java_com_google_vr_ndk_base_GvrApi_nativeGetRecenterEventStartSpaceFromTrackingSpaceTransform(
762     JNIEnv* env,
763     jclass clazz,
764     jlong native_object,
765     jfloatArray rotation_out_array);
766
767 JNI_BOUNDARY_EXPORT jint
768 Java_com_google_vr_ndk_base_GvrApi_nativeGetRecenterEventType(
769     JNIEnv* env,
770     jclass clazz,
771     jlong native_object);
772
773 JNI_BOUNDARY_EXPORT jboolean
774 Java_com_google_vr_ndk_base_GvrApi_nativePollEvent(JNIEnv* env,
775                                                    jobject object,
776                                                    jlong native_object,
777                                                    jlong event_out);
778
779 JNI_BOUNDARY_EXPORT jlong
780 Java_com_google_vr_ndk_base_GvrApi_nativeValueAsFlags(JNIEnv* env,
781                                                       jclass clazz,
782                                                       jlong native_object);
783
784 JNI_BOUNDARY_EXPORT jfloat
785 Java_com_google_vr_ndk_base_GvrApi_nativeValueAsFloat(JNIEnv* env,
786                                                       jclass clazz,
787                                                       jlong native_object);
788
789 JNI_BOUNDARY_EXPORT jint
790 Java_com_google_vr_ndk_base_GvrApi_nativeValueAsInt(JNIEnv* env,
791                                                     jclass clazz,
792                                                     jlong native_object);
793
794 JNI_BOUNDARY_EXPORT void Java_com_google_vr_ndk_base_GvrApi_nativeValueAsMat4f(
795     JNIEnv* env,
796     jclass clazz,
797     jlong native_object,
798     jfloatArray mat4_out_array);
799
800 JNI_BOUNDARY_EXPORT jlong
801 Java_com_google_vr_ndk_base_GvrApi_nativeValueGetFlags(JNIEnv* env,
802                                                        jclass clazz,
803                                                        jlong native_object);
804
805 // Step 3: RegisterNatives.
806
807 static const JNINativeMethod kMethodsGvrApi[] = {
808     {"nativeBufferViewportListCreate",
809      "("
810      "J"
811      ")"
812      "J",
813      reinterpret_cast<void*>(
814          Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportListCreate)},
815     {"nativeBufferViewportListDestroy",
816      "("
817      "J"
818      ")"
819      "V",
820      reinterpret_cast<void*>(
821          Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportListDestroy)},
822     {"nativeBufferViewportListGetSize",
823      "("
824      "J"
825      ")"
826      "I",
827      reinterpret_cast<void*>(
828          Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportListGetSize)},
829     {"nativeBufferViewportListGetItem",
830      "("
831      "J"
832      "I"
833      "J"
834      ")"
835      "V",
836      reinterpret_cast<void*>(
837          Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportListGetItem)},
838     {"nativeBufferViewportListSetItem",
839      "("
840      "J"
841      "I"
842      "J"
843      ")"
844      "V",
845      reinterpret_cast<void*>(
846          Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportListSetItem)},
847     {"nativeBufferViewportCreate",
848      "("
849      "J"
850      ")"
851      "J",
852      reinterpret_cast<void*>(
853          Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportCreate)},
854     {"nativeBufferViewportDestroy",
855      "("
856      "J"
857      ")"
858      "V",
859      reinterpret_cast<void*>(
860          Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportDestroy)},
861     {"nativeBufferViewportGetSourceUv",
862      "("
863      "J"
864      "Landroid/graphics/RectF;"
865      ")"
866      "V",
867      reinterpret_cast<void*>(
868          Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportGetSourceUv)},
869     {"nativeBufferViewportSetSourceUv",
870      "("
871      "J"
872      "F"
873      "F"
874      "F"
875      "F"
876      ")"
877      "V",
878      reinterpret_cast<void*>(
879          Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportSetSourceUv)},
880     {"nativeBufferViewportGetSourceFov",
881      "("
882      "J"
883      "Landroid/graphics/RectF;"
884      ")"
885      "V",
886      reinterpret_cast<void*>(
887          Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportGetSourceFov)},
888     {"nativeBufferViewportSetSourceFov",
889      "("
890      "J"
891      "F"
892      "F"
893      "F"
894      "F"
895      ")"
896      "V",
897      reinterpret_cast<void*>(
898          Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportSetSourceFov)},
899     {"nativeBufferViewportGetTransform",
900      "("
901      "J"
902      "[F"
903      ")"
904      "V",
905      reinterpret_cast<void*>(
906          Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportGetTransform)},
907     {"nativeBufferViewportSetTransform",
908      "("
909      "J"
910      "[F"
911      ")"
912      "V",
913      reinterpret_cast<void*>(
914          Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportSetTransform)},
915     {"nativeBufferViewportEqual",
916      "("
917      "J"
918      "J"
919      ")"
920      "Z",
921      reinterpret_cast<void*>(
922          Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportEqual)},
923     {"nativeBufferViewportGetTargetEye",
924      "("
925      "J"
926      ")"
927      "I",
928      reinterpret_cast<void*>(
929          Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportGetTargetEye)},
930     {"nativeBufferViewportSetTargetEye",
931      "("
932      "J"
933      "I"
934      ")"
935      "V",
936      reinterpret_cast<void*>(
937          Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportSetTargetEye)},
938     {"nativeBufferViewportGetSourceBufferIndex",
939      "("
940      "J"
941      ")"
942      "I",
943      reinterpret_cast<void*>(
944          Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportGetSourceBufferIndex)},
945     {"nativeBufferViewportSetSourceBufferIndex",
946      "("
947      "J"
948      "I"
949      ")"
950      "V",
951      reinterpret_cast<void*>(
952          Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportSetSourceBufferIndex)},
953     {"nativeBufferViewportGetExternalSurfaceId",
954      "("
955      "J"
956      ")"
957      "I",
958      reinterpret_cast<void*>(
959          Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportGetExternalSurfaceId)},
960     {"nativeBufferViewportSetExternalSurfaceId",
961      "("
962      "J"
963      "I"
964      ")"
965      "V",
966      reinterpret_cast<void*>(
967          Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportSetExternalSurfaceId)},
968     {"nativeBufferViewportSetExternalSurface",
969      "("
970      "J"
971      "J"
972      ")"
973      "V",
974      reinterpret_cast<void*>(
975          Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportSetExternalSurface)},
976     {"nativeBufferViewportGetReprojection",
977      "("
978      "J"
979      ")"
980      "I",
981      reinterpret_cast<void*>(
982          Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportGetReprojection)},
983     {"nativeBufferViewportSetReprojection",
984      "("
985      "J"
986      "I"
987      ")"
988      "V",
989      reinterpret_cast<void*>(
990          Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportSetReprojection)},
991     {"nativeBufferViewportSetSourceLayer",
992      "("
993      "J"
994      "I"
995      ")"
996      "V",
997      reinterpret_cast<void*>(
998          Java_com_google_vr_ndk_base_GvrApi_nativeBufferViewportSetSourceLayer)},
999     {"nativeBufferSpecCreate",
1000      "("
1001      "J"
1002      ")"
1003      "J",
1004      reinterpret_cast<void*>(
1005          Java_com_google_vr_ndk_base_GvrApi_nativeBufferSpecCreate)},
1006     {"nativeBufferSpecDestroy",
1007      "("
1008      "J"
1009      ")"
1010      "V",
1011      reinterpret_cast<void*>(
1012          Java_com_google_vr_ndk_base_GvrApi_nativeBufferSpecDestroy)},
1013     {"nativeBufferSpecGetSize",
1014      "("
1015      "J"
1016      "Landroid/graphics/Point;"
1017      ")"
1018      "V",
1019      reinterpret_cast<void*>(
1020          Java_com_google_vr_ndk_base_GvrApi_nativeBufferSpecGetSize)},
1021     {"nativeBufferSpecSetSize",
1022      "("
1023      "J"
1024      "I"
1025      "I"
1026      ")"
1027      "V",
1028      reinterpret_cast<void*>(
1029          Java_com_google_vr_ndk_base_GvrApi_nativeBufferSpecSetSize)},
1030     {"nativeBufferSpecSetColorFormat",
1031      "("
1032      "J"
1033      "I"
1034      ")"
1035      "V",
1036      reinterpret_cast<void*>(
1037          Java_com_google_vr_ndk_base_GvrApi_nativeBufferSpecSetColorFormat)},
1038     {"nativeBufferSpecSetDepthStencilFormat",
1039      "("
1040      "J"
1041      "I"
1042      ")"
1043      "V",
1044      reinterpret_cast<void*>(
1045          Java_com_google_vr_ndk_base_GvrApi_nativeBufferSpecSetDepthStencilFormat)},
1046     {"nativeBufferSpecSetMultiviewLayers",
1047      "("
1048      "J"
1049      "I"
1050      ")"
1051      "V",
1052      reinterpret_cast<void*>(
1053          Java_com_google_vr_ndk_base_GvrApi_nativeBufferSpecSetMultiviewLayers)},
1054     {"nativeBufferSpecGetSamples",
1055      "("
1056      "J"
1057      ")"
1058      "I",
1059      reinterpret_cast<void*>(
1060          Java_com_google_vr_ndk_base_GvrApi_nativeBufferSpecGetSamples)},
1061     {"nativeBufferSpecSetSamples",
1062      "("
1063      "J"
1064      "I"
1065      ")"
1066      "V",
1067      reinterpret_cast<void*>(
1068          Java_com_google_vr_ndk_base_GvrApi_nativeBufferSpecSetSamples)},
1069     {"nativeExternalSurfaceCreateWithListeners",
1070      "("
1071      "J"
1072      "Ljava/lang/Runnable;"
1073      "Ljava/lang/Runnable;"
1074      "Landroid/os/Handler;"
1075      ")"
1076      "J",
1077      reinterpret_cast<void*>(
1078          Java_com_google_vr_ndk_base_GvrApi_nativeExternalSurfaceCreateWithListeners)},
1079     {"nativeExternalSurfaceDestroy",
1080      "("
1081      "J"
1082      ")"
1083      "V",
1084      reinterpret_cast<void*>(
1085          Java_com_google_vr_ndk_base_GvrApi_nativeExternalSurfaceDestroy)},
1086     {"nativeExternalSurfaceGetId",
1087      "("
1088      "J"
1089      ")"
1090      "I",
1091      reinterpret_cast<void*>(
1092          Java_com_google_vr_ndk_base_GvrApi_nativeExternalSurfaceGetId)},
1093     {"nativeExternalSurfaceGetSurface",
1094      "("
1095      "J"
1096      ")"
1097      "Landroid/view/Surface;",
1098      reinterpret_cast<void*>(
1099          Java_com_google_vr_ndk_base_GvrApi_nativeExternalSurfaceGetSurface)},
1100     {"nativeSwapChainCreate",
1101      "("
1102      "J"
1103      "[J"
1104      ")"
1105      "J",
1106      reinterpret_cast<void*>(
1107          Java_com_google_vr_ndk_base_GvrApi_nativeSwapChainCreate)},
1108     {"nativeSwapChainDestroy",
1109      "("
1110      "J"
1111      ")"
1112      "V",
1113      reinterpret_cast<void*>(
1114          Java_com_google_vr_ndk_base_GvrApi_nativeSwapChainDestroy)},
1115     {"nativeSwapChainGetBufferCount",
1116      "("
1117      "J"
1118      ")"
1119      "I",
1120      reinterpret_cast<void*>(
1121          Java_com_google_vr_ndk_base_GvrApi_nativeSwapChainGetBufferCount)},
1122     {"nativeSwapChainGetBufferSize",
1123      "("
1124      "J"
1125      "I"
1126      "Landroid/graphics/Point;"
1127      ")"
1128      "V",
1129      reinterpret_cast<void*>(
1130          Java_com_google_vr_ndk_base_GvrApi_nativeSwapChainGetBufferSize)},
1131     {"nativeSwapChainResizeBuffer",
1132      "("
1133      "J"
1134      "I"
1135      "I"
1136      "I"
1137      ")"
1138      "V",
1139      reinterpret_cast<void*>(
1140          Java_com_google_vr_ndk_base_GvrApi_nativeSwapChainResizeBuffer)},
1141     {"nativeSwapChainAcquireFrame",
1142      "("
1143      "J"
1144      ")"
1145      "J",
1146      reinterpret_cast<void*>(
1147          Java_com_google_vr_ndk_base_GvrApi_nativeSwapChainAcquireFrame)},
1148     {"nativeFrameBindBuffer",
1149      "("
1150      "J"
1151      "I"
1152      ")"
1153      "V",
1154      reinterpret_cast<void*>(
1155          Java_com_google_vr_ndk_base_GvrApi_nativeFrameBindBuffer)},
1156     {"nativeFrameUnbind",
1157      "("
1158      "J"
1159      ")"
1160      "V",
1161      reinterpret_cast<void*>(
1162          Java_com_google_vr_ndk_base_GvrApi_nativeFrameUnbind)},
1163     {"nativeFrameGetFramebufferObject",
1164      "("
1165      "J"
1166      "I"
1167      ")"
1168      "I",
1169      reinterpret_cast<void*>(
1170          Java_com_google_vr_ndk_base_GvrApi_nativeFrameGetFramebufferObject)},
1171     {"nativeFrameGetBufferSize",
1172      "("
1173      "J"
1174      "I"
1175      "Landroid/graphics/Point;"
1176      ")"
1177      "V",
1178      reinterpret_cast<void*>(
1179          Java_com_google_vr_ndk_base_GvrApi_nativeFrameGetBufferSize)},
1180     {"nativeFrameSubmit",
1181      "("
1182      "J"
1183      "J"
1184      "[F"
1185      ")"
1186      "V",
1187      reinterpret_cast<void*>(
1188          Java_com_google_vr_ndk_base_GvrApi_nativeFrameSubmit)},
1189     {"nativeUsingDynamicLibrary",
1190      "("
1191      ")"
1192      "Z",
1193      reinterpret_cast<void*>(
1194          Java_com_google_vr_ndk_base_GvrApi_nativeUsingDynamicLibrary)},
1195     {"nativeUsingShimLibrary",
1196      "("
1197      ")"
1198      "Z",
1199      reinterpret_cast<void*>(
1200          Java_com_google_vr_ndk_base_GvrApi_nativeUsingShimLibrary)},
1201     {"nativeSetApplicationState",
1202      "("
1203      "Ljava/lang/ClassLoader;"
1204      "Landroid/content/Context;"
1205      ")"
1206      "V",
1207      reinterpret_cast<void*>(
1208          Java_com_google_vr_ndk_base_GvrApi_nativeSetApplicationState)},
1209     {"nativeSetDynamicLibraryLoadingEnabled",
1210      "("
1211      "Z"
1212      ")"
1213      "V",
1214      reinterpret_cast<void*>(
1215          Java_com_google_vr_ndk_base_GvrApi_nativeSetDynamicLibraryLoadingEnabled)},
1216     {"nativeCreate",
1217      "("
1218      "Ljava/lang/ClassLoader;"
1219      "Landroid/content/Context;"
1220      "J"
1221      "I"
1222      "I"
1223      "F"
1224      "F"
1225      "Lcom/google/vr/ndk/base/GvrApi$PoseTracker;"
1226      ")"
1227      "J",
1228      reinterpret_cast<void*>(Java_com_google_vr_ndk_base_GvrApi_nativeCreate)},
1229     {"nativeRequestContextSharing",
1230      "("
1231      "J"
1232      "Lcom/google/vr/cardboard/EglReadyListener;"
1233      ")"
1234      "V",
1235      reinterpret_cast<void*>(
1236          Java_com_google_vr_ndk_base_GvrApi_nativeRequestContextSharing)},
1237     {"nativeGetError",
1238      "("
1239      "J"
1240      ")"
1241      "I",
1242      reinterpret_cast<void*>(
1243          Java_com_google_vr_ndk_base_GvrApi_nativeGetError)},
1244     {"nativeClearError",
1245      "("
1246      "J"
1247      ")"
1248      "I",
1249      reinterpret_cast<void*>(
1250          Java_com_google_vr_ndk_base_GvrApi_nativeClearError)},
1251     {"nativeGetErrorString",
1252      "("
1253      "I"
1254      ")"
1255      "Ljava/lang/String;",
1256      reinterpret_cast<void*>(
1257          Java_com_google_vr_ndk_base_GvrApi_nativeGetErrorString)},
1258     {"nativeGetUserPrefs",
1259      "("
1260      "J"
1261      ")"
1262      "J",
1263      reinterpret_cast<void*>(
1264          Java_com_google_vr_ndk_base_GvrApi_nativeGetUserPrefs)},
1265     {"nativeUserPrefsGetControllerHandedness",
1266      "("
1267      "J"
1268      ")"
1269      "I",
1270      reinterpret_cast<void*>(
1271          Java_com_google_vr_ndk_base_GvrApi_nativeUserPrefsGetControllerHandedness)},
1272     {"nativePause",
1273      "("
1274      "J"
1275      ")"
1276      "V",
1277      reinterpret_cast<void*>(Java_com_google_vr_ndk_base_GvrApi_nativePause)},
1278     {"nativeResume",
1279      "("
1280      "J"
1281      ")"
1282      "V",
1283      reinterpret_cast<void*>(Java_com_google_vr_ndk_base_GvrApi_nativeResume)},
1284     {"nativeReleaseGvrContext",
1285      "("
1286      "J"
1287      ")"
1288      "V",
1289      reinterpret_cast<void*>(
1290          Java_com_google_vr_ndk_base_GvrApi_nativeReleaseGvrContext)},
1291     {"nativeInitializeGl",
1292      "("
1293      "J"
1294      ")"
1295      "V",
1296      reinterpret_cast<void*>(
1297          Java_com_google_vr_ndk_base_GvrApi_nativeInitializeGl)},
1298     {"nativeOnSurfaceCreatedReprojectionThread",
1299      "("
1300      "J"
1301      ")"
1302      "V",
1303      reinterpret_cast<void*>(
1304          Java_com_google_vr_ndk_base_GvrApi_nativeOnSurfaceCreatedReprojectionThread)},
1305     {"nativeOnSurfaceChangedReprojectionThread",
1306      "("
1307      "J"
1308      ")"
1309      "V",
1310      reinterpret_cast<void*>(
1311          Java_com_google_vr_ndk_base_GvrApi_nativeOnSurfaceChangedReprojectionThread)},
1312     {"nativeGetRecommendedBufferViewports",
1313      "("
1314      "J"
1315      "J"
1316      ")"
1317      "V",
1318      reinterpret_cast<void*>(
1319          Java_com_google_vr_ndk_base_GvrApi_nativeGetRecommendedBufferViewports)},
1320     {"nativeGetScreenBufferViewports",
1321      "("
1322      "J"
1323      "J"
1324      ")"
1325      "V",
1326      reinterpret_cast<void*>(
1327          Java_com_google_vr_ndk_base_GvrApi_nativeGetScreenBufferViewports)},
1328     {"nativeGetMaximumEffectiveRenderTargetSize",
1329      "("
1330      "J"
1331      "Landroid/graphics/Point;"
1332      ")"
1333      "V",
1334      reinterpret_cast<void*>(
1335          Java_com_google_vr_ndk_base_GvrApi_nativeGetMaximumEffectiveRenderTargetSize)},
1336     {"nativeGetScreenTargetSize",
1337      "("
1338      "J"
1339      "Landroid/graphics/Point;"
1340      ")"
1341      "V",
1342      reinterpret_cast<void*>(
1343          Java_com_google_vr_ndk_base_GvrApi_nativeGetScreenTargetSize)},
1344     {"nativeDistortToScreen",
1345      "("
1346      "J"
1347      "I"
1348      "J"
1349      "[F"
1350      "J"
1351      ")"
1352      "V",
1353      reinterpret_cast<void*>(
1354          Java_com_google_vr_ndk_base_GvrApi_nativeDistortToScreen)},
1355     {"nativeSetDefaultFramebufferActive",
1356      "("
1357      "J"
1358      ")"
1359      "V",
1360      reinterpret_cast<void*>(
1361          Java_com_google_vr_ndk_base_GvrApi_nativeSetDefaultFramebufferActive)},
1362     {"nativeRenderReprojectionThread",
1363      "("
1364      "J"
1365      ")"
1366      "Landroid/graphics/Point;",
1367      reinterpret_cast<void*>(
1368          Java_com_google_vr_ndk_base_GvrApi_nativeRenderReprojectionThread)},
1369     {"nativeOnPauseReprojectionThread",
1370      "("
1371      "J"
1372      ")"
1373      "V",
1374      reinterpret_cast<void*>(
1375          Java_com_google_vr_ndk_base_GvrApi_nativeOnPauseReprojectionThread)},
1376     {"nativeGetHeadSpaceFromStartSpaceRotation",
1377      "("
1378      "J"
1379      "[F"
1380      "J"
1381      ")"
1382      "V",
1383      reinterpret_cast<void*>(
1384          Java_com_google_vr_ndk_base_GvrApi_nativeGetHeadSpaceFromStartSpaceRotation)},
1385     {"nativeGetHeadSpaceFromStartSpaceTransform",
1386      "("
1387      "J"
1388      "[F"
1389      "J"
1390      ")"
1391      "V",
1392      reinterpret_cast<void*>(
1393          Java_com_google_vr_ndk_base_GvrApi_nativeGetHeadSpaceFromStartSpaceTransform)},
1394     {"nativeSetIgnoreManualPauseResumeTracker",
1395      "("
1396      "J"
1397      "Z"
1398      ")"
1399      "V",
1400      reinterpret_cast<void*>(
1401          Java_com_google_vr_ndk_base_GvrApi_nativeSetIgnoreManualPauseResumeTracker)},
1402     {"nativePauseTracking",
1403      "("
1404      "J"
1405      ")"
1406      "V",
1407      reinterpret_cast<void*>(
1408          Java_com_google_vr_ndk_base_GvrApi_nativePauseTracking)},
1409     {"nativePauseTrackingGetState",
1410      "("
1411      "J"
1412      ")"
1413      "[B",
1414      reinterpret_cast<void*>(
1415          Java_com_google_vr_ndk_base_GvrApi_nativePauseTrackingGetState)},
1416     {"nativeResumeTracking",
1417      "("
1418      "J"
1419      ")"
1420      "V",
1421      reinterpret_cast<void*>(
1422          Java_com_google_vr_ndk_base_GvrApi_nativeResumeTracking)},
1423     {"nativeResumeTrackingSetState",
1424      "("
1425      "J"
1426      "[B"
1427      ")"
1428      "V",
1429      reinterpret_cast<void*>(
1430          Java_com_google_vr_ndk_base_GvrApi_nativeResumeTrackingSetState)},
1431     {"nativeResetTracking",
1432      "("
1433      "J"
1434      ")"
1435      "V",
1436      reinterpret_cast<void*>(
1437          Java_com_google_vr_ndk_base_GvrApi_nativeResetTracking)},
1438     {"nativeRecenterTracking",
1439      "("
1440      "J"
1441      ")"
1442      "V",
1443      reinterpret_cast<void*>(
1444          Java_com_google_vr_ndk_base_GvrApi_nativeRecenterTracking)},
1445     {"nativeGetEyeFromHeadMatrix",
1446      "("
1447      "J"
1448      "I"
1449      "[F"
1450      ")"
1451      "V",
1452      reinterpret_cast<void*>(
1453          Java_com_google_vr_ndk_base_GvrApi_nativeGetEyeFromHeadMatrix)},
1454     {"nativeGetWindowBounds",
1455      "("
1456      "J"
1457      ")"
1458      "[I",
1459      reinterpret_cast<void*>(
1460          Java_com_google_vr_ndk_base_GvrApi_nativeGetWindowBounds)},
1461     {"nativeComputeDistortedPoint",
1462      "("
1463      "J"
1464      "I"
1465      "[F"
1466      ")"
1467      "[F",
1468      reinterpret_cast<void*>(
1469          Java_com_google_vr_ndk_base_GvrApi_nativeComputeDistortedPoint)},
1470     {"nativeSetDefaultViewerProfile",
1471      "("
1472      "J"
1473      "Ljava/lang/String;"
1474      ")"
1475      "Z",
1476      reinterpret_cast<void*>(
1477          Java_com_google_vr_ndk_base_GvrApi_nativeSetDefaultViewerProfile)},
1478     {"nativeGetViewerVendor",
1479      "("
1480      "J"
1481      ")"
1482      "Ljava/lang/String;",
1483      reinterpret_cast<void*>(
1484          Java_com_google_vr_ndk_base_GvrApi_nativeGetViewerVendor)},
1485     {"nativeGetViewerModel",
1486      "("
1487      "J"
1488      ")"
1489      "Ljava/lang/String;",
1490      reinterpret_cast<void*>(
1491          Java_com_google_vr_ndk_base_GvrApi_nativeGetViewerModel)},
1492     {"nativeGetViewerType",
1493      "("
1494      "J"
1495      ")"
1496      "I",
1497      reinterpret_cast<void*>(
1498          Java_com_google_vr_ndk_base_GvrApi_nativeGetViewerType)},
1499     {"nativeSetAsyncReprojectionEnabled",
1500      "("
1501      "J"
1502      "Z"
1503      ")"
1504      "Z",
1505      reinterpret_cast<void*>(
1506          Java_com_google_vr_ndk_base_GvrApi_nativeSetAsyncReprojectionEnabled)},
1507     {"nativeGetAsyncReprojectionEnabled",
1508      "("
1509      "J"
1510      ")"
1511      "Z",
1512      reinterpret_cast<void*>(
1513          Java_com_google_vr_ndk_base_GvrApi_nativeGetAsyncReprojectionEnabled)},
1514     {"nativeIsFeatureSupported",
1515      "("
1516      "J"
1517      "I"
1518      ")"
1519      "Z",
1520      reinterpret_cast<void*>(
1521          Java_com_google_vr_ndk_base_GvrApi_nativeIsFeatureSupported)},
1522     {"nativeReconnectSensors",
1523      "("
1524      "J"
1525      ")"
1526      "V",
1527      reinterpret_cast<void*>(
1528          Java_com_google_vr_ndk_base_GvrApi_nativeReconnectSensors)},
1529     {"nativeSetIdleListener",
1530      "("
1531      "J"
1532      "Lcom/google/vr/ndk/base/GvrApi$IdleListener;"
1533      ")"
1534      "V",
1535      reinterpret_cast<void*>(
1536          Java_com_google_vr_ndk_base_GvrApi_nativeSetIdleListener)},
1537     {"nativeSetViewerParams",
1538      "("
1539      "J"
1540      "[B"
1541      ")"
1542      "Z",
1543      reinterpret_cast<void*>(
1544          Java_com_google_vr_ndk_base_GvrApi_nativeSetViewerParams)},
1545     {"nativeSetDisplayMetrics",
1546      "("
1547      "J"
1548      "I"
1549      "I"
1550      "F"
1551      "F"
1552      ")"
1553      "V",
1554      reinterpret_cast<void*>(
1555          Java_com_google_vr_ndk_base_GvrApi_nativeSetDisplayMetrics)},
1556     {"nativeGetBorderSizeMeters",
1557      "("
1558      "J"
1559      ")"
1560      "F",
1561      reinterpret_cast<void*>(
1562          Java_com_google_vr_ndk_base_GvrApi_nativeGetBorderSizeMeters)},
1563     {"nativeSetSurfaceSize",
1564      "("
1565      "J"
1566      "I"
1567      "I"
1568      ")"
1569      "V",
1570      reinterpret_cast<void*>(
1571          Java_com_google_vr_ndk_base_GvrApi_nativeSetSurfaceSize)},
1572     {"nativeSetLensOffset",
1573      "("
1574      "J"
1575      "F"
1576      "F"
1577      "F"
1578      ")"
1579      "V",
1580      reinterpret_cast<void*>(
1581          Java_com_google_vr_ndk_base_GvrApi_nativeSetLensOffset)},
1582     {"nativeDumpDebugData",
1583      "("
1584      "J"
1585      ")"
1586      "V",
1587      reinterpret_cast<void*>(
1588          Java_com_google_vr_ndk_base_GvrApi_nativeDumpDebugData)},
1589     {"nativeUsingVrDisplayService",
1590      "("
1591      "J"
1592      ")"
1593      "Z",
1594      reinterpret_cast<void*>(
1595          Java_com_google_vr_ndk_base_GvrApi_nativeUsingVrDisplayService)},
1596     {"nativeCreateEvent",
1597      "("
1598      ")"
1599      "J",
1600      reinterpret_cast<void*>(
1601          Java_com_google_vr_ndk_base_GvrApi_nativeCreateEvent)},
1602     {"nativeCreateValue",
1603      "("
1604      ")"
1605      "J",
1606      reinterpret_cast<void*>(
1607          Java_com_google_vr_ndk_base_GvrApi_nativeCreateValue)},
1608     {"nativeDestroyEvent",
1609      "("
1610      "J"
1611      ")"
1612      "V",
1613      reinterpret_cast<void*>(
1614          Java_com_google_vr_ndk_base_GvrApi_nativeDestroyEvent)},
1615     {"nativeDestroyValue",
1616      "("
1617      "J"
1618      ")"
1619      "V",
1620      reinterpret_cast<void*>(
1621          Java_com_google_vr_ndk_base_GvrApi_nativeDestroyValue)},
1622     {"nativeGetCurrentProperties",
1623      "("
1624      "J"
1625      ")"
1626      "J",
1627      reinterpret_cast<void*>(
1628          Java_com_google_vr_ndk_base_GvrApi_nativeGetCurrentProperties)},
1629     {"nativeGetEventFlags",
1630      "("
1631      "J"
1632      ")"
1633      "J",
1634      reinterpret_cast<void*>(
1635          Java_com_google_vr_ndk_base_GvrApi_nativeGetEventFlags)},
1636     {"nativeGetEventTimestamp",
1637      "("
1638      "J"
1639      ")"
1640      "J",
1641      reinterpret_cast<void*>(
1642          Java_com_google_vr_ndk_base_GvrApi_nativeGetEventTimestamp)},
1643     {"nativeGetEventType",
1644      "("
1645      "J"
1646      ")"
1647      "I",
1648      reinterpret_cast<void*>(
1649          Java_com_google_vr_ndk_base_GvrApi_nativeGetEventType)},
1650     {"nativeGetProperty",
1651      "("
1652      "J"
1653      "I"
1654      "J"
1655      ")"
1656      "Z",
1657      reinterpret_cast<void*>(
1658          Java_com_google_vr_ndk_base_GvrApi_nativeGetProperty)},
1659     {"nativeGetRecenterEventFlags",
1660      "("
1661      "J"
1662      ")"
1663      "J",
1664      reinterpret_cast<void*>(
1665          Java_com_google_vr_ndk_base_GvrApi_nativeGetRecenterEventFlags)},
1666     {"nativeGetRecenterEventStartSpaceFromTrackingSpaceTransform",
1667      "("
1668      "J"
1669      "[F"
1670      ")"
1671      "V",
1672      reinterpret_cast<void*>(
1673          Java_com_google_vr_ndk_base_GvrApi_nativeGetRecenterEventStartSpaceFromTrackingSpaceTransform)},
1674     {"nativeGetRecenterEventType",
1675      "("
1676      "J"
1677      ")"
1678      "I",
1679      reinterpret_cast<void*>(
1680          Java_com_google_vr_ndk_base_GvrApi_nativeGetRecenterEventType)},
1681     {"nativePollEvent",
1682      "("
1683      "J"
1684      "J"
1685      ")"
1686      "Z",
1687      reinterpret_cast<void*>(
1688          Java_com_google_vr_ndk_base_GvrApi_nativePollEvent)},
1689     {"nativeValueAsFlags",
1690      "("
1691      "J"
1692      ")"
1693      "J",
1694      reinterpret_cast<void*>(
1695          Java_com_google_vr_ndk_base_GvrApi_nativeValueAsFlags)},
1696     {"nativeValueAsFloat",
1697      "("
1698      "J"
1699      ")"
1700      "F",
1701      reinterpret_cast<void*>(
1702          Java_com_google_vr_ndk_base_GvrApi_nativeValueAsFloat)},
1703     {"nativeValueAsInt",
1704      "("
1705      "J"
1706      ")"
1707      "I",
1708      reinterpret_cast<void*>(
1709          Java_com_google_vr_ndk_base_GvrApi_nativeValueAsInt)},
1710     {"nativeValueAsMat4f",
1711      "("
1712      "J"
1713      "[F"
1714      ")"
1715      "V",
1716      reinterpret_cast<void*>(
1717          Java_com_google_vr_ndk_base_GvrApi_nativeValueAsMat4f)},
1718     {"nativeValueGetFlags",
1719      "("
1720      "J"
1721      ")"
1722      "J",
1723      reinterpret_cast<void*>(
1724          Java_com_google_vr_ndk_base_GvrApi_nativeValueGetFlags)},
1725 };
1726
1727 static bool RegisterNativesImpl(JNIEnv* env) {
1728   const int kMethodsGvrApiSize = std::extent<decltype(kMethodsGvrApi)>();
1729
1730   if (env->RegisterNatives(GvrApi_clazz(env), kMethodsGvrApi,
1731                            kMethodsGvrApiSize) < 0) {
1732     jni_generator::HandleRegistrationError(env, GvrApi_clazz(env), __FILE__);
1733     return false;
1734   }
1735
1736   return true;
1737 }
1738
1739 static bool RegisterGvrApiNatives(JNIEnv* env) {
1740   return RegisterNativesImpl(env);
1741 }
1742
1743 }  // namespace GvrApi
1744
1745 #endif  // com_google_vr_ndk_base_GvrApi_JNI