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.
5 // This file is of the same format as file that generated by
6 // third_party/jni_zero/jni_zero.py
8 // com/google/vr/cardboard/DisplaySynchronizer
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. Added function RegisterDisplaySynchronizerNatives at the end of this file.
15 // 5. Added "vr" as an argument to base::android::LazyGetClass.
17 #ifndef com_google_vr_cardboard_DisplaySynchronizer_JNI
18 #define com_google_vr_cardboard_DisplaySynchronizer_JNI
20 #include "base/android/jni_android.h"
21 // ----------------------------------------------------------------------------
23 // ----------------------------------------------------------------------------
26 #include <type_traits>
28 #include "third_party/jni_zero/jni_int_wrapper.h"
29 #include "third_party/jni_zero/jni_zero_helper.h"
31 // Step 1: forward declarations.
34 const char kDisplaySynchronizerClassPath[] =
35 "com/google/vr/cardboard/DisplaySynchronizer";
36 // Leaking this jclass as we cannot use LazyInstance from some threads.
37 std::atomic<jclass> g_DisplaySynchronizer_clazz __attribute__((unused))
39 #define DisplaySynchronizer_clazz(env) \
40 base::android::LazyGetClass(env, kDisplaySynchronizerClassPath, "vr", \
41 &g_DisplaySynchronizer_clazz)
45 namespace DisplaySynchronizer {
47 extern "C" __attribute__((visibility("default"))) jlong
48 Java_com_google_vr_cardboard_DisplaySynchronizer_nativeCreate(
54 // Step 2: method stubs.
55 extern "C" __attribute__((visibility("default"))) void
56 Java_com_google_vr_cardboard_DisplaySynchronizer_nativeDestroy(
59 jlong nativeDisplaySynchronizer);
61 extern "C" __attribute__((visibility("default"))) void
62 Java_com_google_vr_cardboard_DisplaySynchronizer_nativeReset(
65 jlong nativeDisplaySynchronizer,
66 jlong expectedInterval,
69 extern "C" __attribute__((visibility("default"))) void
70 Java_com_google_vr_cardboard_DisplaySynchronizer_nativeUpdate(
73 jlong nativeDisplaySynchronizer,
75 jint currentRotation);
77 extern "C" __attribute__((visibility("default"))) void
78 Java_com_google_vr_cardboard_DisplaySynchronizer_nativeOnMetricsChanged(
83 // Step 3: RegisterNatives.
85 static const JNINativeMethod kMethodsDisplaySynchronizer[] = {
88 "Ljava/lang/ClassLoader;"
89 "Landroid/content/Context;"
92 reinterpret_cast<void*>(
93 Java_com_google_vr_cardboard_DisplaySynchronizer_nativeCreate)},
99 reinterpret_cast<void*>(
100 Java_com_google_vr_cardboard_DisplaySynchronizer_nativeDestroy)},
108 reinterpret_cast<void*>(
109 Java_com_google_vr_cardboard_DisplaySynchronizer_nativeReset)},
117 reinterpret_cast<void*>(
118 Java_com_google_vr_cardboard_DisplaySynchronizer_nativeUpdate)},
119 {"nativeOnMetricsChanged",
124 reinterpret_cast<void*>(
125 Java_com_google_vr_cardboard_DisplaySynchronizer_nativeOnMetricsChanged)},
128 static bool RegisterNativesImpl(JNIEnv* env) {
129 const int kMethodsDisplaySynchronizerSize =
130 std::extent<decltype(kMethodsDisplaySynchronizer)>();
132 if (env->RegisterNatives(DisplaySynchronizer_clazz(env),
133 kMethodsDisplaySynchronizer,
134 kMethodsDisplaySynchronizerSize) < 0) {
135 jni_generator::HandleRegistrationError(env, DisplaySynchronizer_clazz(env),
143 static bool RegisterDisplaySynchronizerNatives(JNIEnv* env) {
144 return RegisterNativesImpl(env);
147 } // namespace DisplaySynchronizer
149 #endif // com_google_vr_cardboard_DisplaySynchronizer_JNI