blob: 27243292ed0407b412de2dccdee5d5a775a8daf4 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// This file is of the same format as file that generated by
// base/android/jni_generator/jni_generator.py
// For
// com/google/vr/cardboard/DisplaySynchronizer
// Local modification includes:
// 1. Remove all implementaiton, only keep definition.
// 2. Use absolute path instead of relative path.
// 3. Removed all helper functions such as: Create.
// 4. Added function RegisterDisplaySynchronizerNatives at the end of this file.
#ifndef com_google_vr_cardboard_DisplaySynchronizer_JNI
#define com_google_vr_cardboard_DisplaySynchronizer_JNI
#include "base/android/jni_android.h"
// ----------------------------------------------------------------------------
// Native JNI methods
// ----------------------------------------------------------------------------
#include <jni.h>
#include <atomic>
#include <type_traits>
#include "base/android/jni_generator/jni_generator_helper.h"
#include "base/android/jni_int_wrapper.h"
// Step 1: forward declarations.
namespace {
const char kDisplaySynchronizerClassPath[] =
"com/google/vr/cardboard/DisplaySynchronizer";
// Leaking this jclass as we cannot use LazyInstance from some threads.
std::atomic<jclass> g_DisplaySynchronizer_clazz __attribute__((unused))
(nullptr);
#define DisplaySynchronizer_clazz(env) \
base::android::LazyGetClass(env, kDisplaySynchronizerClassPath, \
&g_DisplaySynchronizer_clazz)
} // namespace
namespace DisplaySynchronizer {
extern "C" __attribute__((visibility("default"))) jlong
Java_com_google_vr_cardboard_DisplaySynchronizer_nativeCreate(
JNIEnv* env,
jobject jcaller,
jclass classLoader,
jobject appContext);
// Step 2: method stubs.
extern "C" __attribute__((visibility("default"))) void
Java_com_google_vr_cardboard_DisplaySynchronizer_nativeDestroy(
JNIEnv* env,
jobject jcaller,
jlong nativeDisplaySynchronizer);
extern "C" __attribute__((visibility("default"))) void
Java_com_google_vr_cardboard_DisplaySynchronizer_nativeReset(
JNIEnv* env,
jobject jcaller,
jlong nativeDisplaySynchronizer,
jlong expectedInterval,
jlong vsyncOffset);
extern "C" __attribute__((visibility("default"))) void
Java_com_google_vr_cardboard_DisplaySynchronizer_nativeUpdate(
JNIEnv* env,
jobject jcaller,
jlong nativeDisplaySynchronizer,
jlong syncTime,
jint currentRotation);
extern "C" __attribute__((visibility("default"))) void
Java_com_google_vr_cardboard_DisplaySynchronizer_nativeOnMetricsChanged(
JNIEnv* env,
jobject obj,
jlong native_object);
// Step 3: RegisterNatives.
static const JNINativeMethod kMethodsDisplaySynchronizer[] = {
{"nativeCreate",
"("
"Ljava/lang/ClassLoader;"
"Landroid/content/Context;"
")"
"J",
reinterpret_cast<void*>(
Java_com_google_vr_cardboard_DisplaySynchronizer_nativeCreate)},
{"nativeDestroy",
"("
"J"
")"
"V",
reinterpret_cast<void*>(
Java_com_google_vr_cardboard_DisplaySynchronizer_nativeDestroy)},
{"nativeReset",
"("
"J"
"J"
"J"
")"
"V",
reinterpret_cast<void*>(
Java_com_google_vr_cardboard_DisplaySynchronizer_nativeReset)},
{"nativeUpdate",
"("
"J"
"J"
"I"
")"
"V",
reinterpret_cast<void*>(
Java_com_google_vr_cardboard_DisplaySynchronizer_nativeUpdate)},
{"nativeOnMetricsChanged",
"("
"J"
")"
"V",
reinterpret_cast<void*>(
Java_com_google_vr_cardboard_DisplaySynchronizer_nativeOnMetricsChanged)},
};
static bool RegisterNativesImpl(JNIEnv* env) {
if (base::android::IsSelectiveJniRegistrationEnabled(env))
return true;
const int kMethodsDisplaySynchronizerSize =
std::extent<decltype(kMethodsDisplaySynchronizer)>();
if (env->RegisterNatives(DisplaySynchronizer_clazz(env),
kMethodsDisplaySynchronizer,
kMethodsDisplaySynchronizerSize) < 0) {
jni_generator::HandleRegistrationError(env, DisplaySynchronizer_clazz(env),
__FILE__);
return false;
}
return true;
}
static bool RegisterDisplaySynchronizerNatives(JNIEnv* env) {
return RegisterNativesImpl(env);
}
} // namespace DisplaySynchronizer
#endif // com_google_vr_cardboard_DisplaySynchronizer_JNI