display_synchronizer_jni.h 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. // Copyright 2014 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. // This file is of the same format as file that generated by
  5. // base/android/jni_generator/jni_generator.py
  6. // For
  7. // com/google/vr/cardboard/DisplaySynchronizer
  8. // Local modification includes:
  9. // 1. Remove all implementaiton, only keep definition.
  10. // 2. Use absolute path instead of relative path.
  11. // 3. Removed all helper functions such as: Create.
  12. // 4. Added function RegisterDisplaySynchronizerNatives at the end of this file.
  13. // 5. Added "vr" as an argument to base::android::LazyGetClass.
  14. #ifndef com_google_vr_cardboard_DisplaySynchronizer_JNI
  15. #define com_google_vr_cardboard_DisplaySynchronizer_JNI
  16. #include "base/android/jni_android.h"
  17. // ----------------------------------------------------------------------------
  18. // Native JNI methods
  19. // ----------------------------------------------------------------------------
  20. #include <jni.h>
  21. #include <atomic>
  22. #include <type_traits>
  23. #include "base/android/jni_generator/jni_generator_helper.h"
  24. #include "base/android/jni_int_wrapper.h"
  25. // Step 1: forward declarations.
  26. namespace {
  27. const char kDisplaySynchronizerClassPath[] =
  28. "com/google/vr/cardboard/DisplaySynchronizer";
  29. // Leaking this jclass as we cannot use LazyInstance from some threads.
  30. std::atomic<jclass> g_DisplaySynchronizer_clazz __attribute__((unused))
  31. (nullptr);
  32. #define DisplaySynchronizer_clazz(env) \
  33. base::android::LazyGetClass(env, kDisplaySynchronizerClassPath, "vr", \
  34. &g_DisplaySynchronizer_clazz)
  35. } // namespace
  36. namespace DisplaySynchronizer {
  37. extern "C" __attribute__((visibility("default"))) jlong
  38. Java_com_google_vr_cardboard_DisplaySynchronizer_nativeCreate(
  39. JNIEnv* env,
  40. jobject jcaller,
  41. jclass classLoader,
  42. jobject appContext);
  43. // Step 2: method stubs.
  44. extern "C" __attribute__((visibility("default"))) void
  45. Java_com_google_vr_cardboard_DisplaySynchronizer_nativeDestroy(
  46. JNIEnv* env,
  47. jobject jcaller,
  48. jlong nativeDisplaySynchronizer);
  49. extern "C" __attribute__((visibility("default"))) void
  50. Java_com_google_vr_cardboard_DisplaySynchronizer_nativeReset(
  51. JNIEnv* env,
  52. jobject jcaller,
  53. jlong nativeDisplaySynchronizer,
  54. jlong expectedInterval,
  55. jlong vsyncOffset);
  56. extern "C" __attribute__((visibility("default"))) void
  57. Java_com_google_vr_cardboard_DisplaySynchronizer_nativeUpdate(
  58. JNIEnv* env,
  59. jobject jcaller,
  60. jlong nativeDisplaySynchronizer,
  61. jlong syncTime,
  62. jint currentRotation);
  63. extern "C" __attribute__((visibility("default"))) void
  64. Java_com_google_vr_cardboard_DisplaySynchronizer_nativeOnMetricsChanged(
  65. JNIEnv* env,
  66. jobject obj,
  67. jlong native_object);
  68. // Step 3: RegisterNatives.
  69. static const JNINativeMethod kMethodsDisplaySynchronizer[] = {
  70. {"nativeCreate",
  71. "("
  72. "Ljava/lang/ClassLoader;"
  73. "Landroid/content/Context;"
  74. ")"
  75. "J",
  76. reinterpret_cast<void*>(
  77. Java_com_google_vr_cardboard_DisplaySynchronizer_nativeCreate)},
  78. {"nativeDestroy",
  79. "("
  80. "J"
  81. ")"
  82. "V",
  83. reinterpret_cast<void*>(
  84. Java_com_google_vr_cardboard_DisplaySynchronizer_nativeDestroy)},
  85. {"nativeReset",
  86. "("
  87. "J"
  88. "J"
  89. "J"
  90. ")"
  91. "V",
  92. reinterpret_cast<void*>(
  93. Java_com_google_vr_cardboard_DisplaySynchronizer_nativeReset)},
  94. {"nativeUpdate",
  95. "("
  96. "J"
  97. "J"
  98. "I"
  99. ")"
  100. "V",
  101. reinterpret_cast<void*>(
  102. Java_com_google_vr_cardboard_DisplaySynchronizer_nativeUpdate)},
  103. {"nativeOnMetricsChanged",
  104. "("
  105. "J"
  106. ")"
  107. "V",
  108. reinterpret_cast<void*>(
  109. Java_com_google_vr_cardboard_DisplaySynchronizer_nativeOnMetricsChanged)},
  110. };
  111. static bool RegisterNativesImpl(JNIEnv* env) {
  112. if (base::android::IsSelectiveJniRegistrationEnabled(env))
  113. return true;
  114. const int kMethodsDisplaySynchronizerSize =
  115. std::extent<decltype(kMethodsDisplaySynchronizer)>();
  116. if (env->RegisterNatives(DisplaySynchronizer_clazz(env),
  117. kMethodsDisplaySynchronizer,
  118. kMethodsDisplaySynchronizerSize) < 0) {
  119. jni_generator::HandleRegistrationError(env, DisplaySynchronizer_clazz(env),
  120. __FILE__);
  121. return false;
  122. }
  123. return true;
  124. }
  125. static bool RegisterDisplaySynchronizerNatives(JNIEnv* env) {
  126. return RegisterNativesImpl(env);
  127. }
  128. } // namespace DisplaySynchronizer
  129. #endif // com_google_vr_cardboard_DisplaySynchronizer_JNI