Loading services/core/java/com/android/server/location/GnssLocationProvider.java +6 −6 Original line number Diff line number Diff line Loading @@ -1597,8 +1597,7 @@ public class GnssLocationProvider extends AbstractLocationProvider implements private void reportGnssServiceDied() { if (DEBUG) Log.d(TAG, "reportGnssServiceDied"); mHandler.post(() -> { class_init_native(); setupNativeGnssService(); setupNativeGnssService(/* reinitializeGnssServiceHandle = */ true); if (isEnabled()) { synchronized (mLock) { mEnabled = false; Loading Loading @@ -2052,7 +2051,8 @@ public class GnssLocationProvider extends AbstractLocationProvider implements * this handler. */ private void handleInitialize() { setupNativeGnssService(); // class_init_native() already initializes the GNSS service handle during class loading. setupNativeGnssService(/* reinitializeGnssServiceHandle = */ false); if (native_is_gnss_visibility_control_supported()) { mGnssVisibilityControl = new GnssVisibilityControl(mContext, mLooper); Loading Loading @@ -2214,8 +2214,8 @@ public class GnssLocationProvider extends AbstractLocationProvider implements pw.append(s); } private void setupNativeGnssService() { native_init_once(); private void setupNativeGnssService(boolean reinitializeGnssServiceHandle) { native_init_once(reinitializeGnssServiceHandle); /* * A cycle of native_init() and native_cleanup() is needed so that callbacks are Loading Loading @@ -2244,7 +2244,7 @@ public class GnssLocationProvider extends AbstractLocationProvider implements private static native boolean native_is_gnss_visibility_control_supported(); private static native void native_init_once(); private static native void native_init_once(boolean reinitializeGnssServiceHandle); private native boolean native_init(); Loading services/core/jni/com_android_server_location_GnssLocationProvider.cpp +18 −3 Original line number Diff line number Diff line Loading @@ -1495,7 +1495,8 @@ struct GnssBatchingCallback_V2_0 : public IGnssBatchingCallback_V2_0 { } }; static void android_location_GnssLocationProvider_class_init_native(JNIEnv* env, jclass clazz) { /* Initializes the GNSS service handle. */ static void android_location_GnssLocationProvider_set_gps_service_handle() { gnssHal_V2_0 = IGnss_V2_0::getService(); if (gnssHal_V2_0 != nullptr) { gnssHal = gnssHal_V2_0; Loading @@ -1514,7 +1515,12 @@ static void android_location_GnssLocationProvider_class_init_native(JNIEnv* env, gnssHal = IGnss_V1_0::getService(); } static void android_location_GnssLocationProvider_init_once(JNIEnv* env, jclass clazz) { /* One time initialization at system boot */ static void android_location_GnssLocationProvider_class_init_native(JNIEnv* env, jclass clazz) { // Initialize the top level gnss HAL handle. android_location_GnssLocationProvider_set_gps_service_handle(); // Cache methodIDs and class IDs. method_reportLocation = env->GetMethodID(clazz, "reportLocation", "(ZLandroid/location/Location;)V"); method_reportStatus = env->GetMethodID(clazz, "reportStatus", "(I)V"); Loading Loading @@ -1638,7 +1644,11 @@ static void android_location_GnssLocationProvider_init_once(JNIEnv* env, jclass (jclass) env->NewGlobalRef(gnssConfiguration_halInterfaceVersionClass); method_halInterfaceVersionCtor = env->GetMethodID(class_gnssConfiguration_halInterfaceVersion, "<init>", "(II)V"); } /* Initialization needed at system boot and whenever GNSS service dies. */ static void android_location_GnssLocationProvider_init_once(JNIEnv* env, jclass clazz, jboolean reinitializeGnssServiceHandle) { /* * Save a pointer to JVM. */ Loading @@ -1647,6 +1657,10 @@ static void android_location_GnssLocationProvider_init_once(JNIEnv* env, jclass LOG_ALWAYS_FATAL("Unable to get Java VM. Error: %d", jvmStatus); } if (reinitializeGnssServiceHandle) { android_location_GnssLocationProvider_set_gps_service_handle(); } if (gnssHal == nullptr) { ALOGE("Unable to get GPS service\n"); return; Loading Loading @@ -1871,6 +1885,7 @@ static jobject android_location_GnssConfiguration_get_gnss_configuration_version return createHalInterfaceVersionJavaObject(env, major, minor); } /* Initialization needed each time the GPS service is shutdown. */ static jboolean android_location_GnssLocationProvider_init(JNIEnv* env, jobject obj) { /* * This must be set before calling into the HAL library. Loading Loading @@ -3026,7 +3041,7 @@ static const JNINativeMethod sMethods[] = { android_location_GnssLocationProvider_class_init_native)}, {"native_is_supported", "()Z", reinterpret_cast<void *>( android_location_GnssLocationProvider_is_supported)}, {"native_init_once", "()V", reinterpret_cast<void *>( {"native_init_once", "(Z)V", reinterpret_cast<void *>( android_location_GnssLocationProvider_init_once)}, {"native_init", "()Z", reinterpret_cast<void *>(android_location_GnssLocationProvider_init)}, {"native_cleanup", "()V", reinterpret_cast<void *>( Loading Loading
services/core/java/com/android/server/location/GnssLocationProvider.java +6 −6 Original line number Diff line number Diff line Loading @@ -1597,8 +1597,7 @@ public class GnssLocationProvider extends AbstractLocationProvider implements private void reportGnssServiceDied() { if (DEBUG) Log.d(TAG, "reportGnssServiceDied"); mHandler.post(() -> { class_init_native(); setupNativeGnssService(); setupNativeGnssService(/* reinitializeGnssServiceHandle = */ true); if (isEnabled()) { synchronized (mLock) { mEnabled = false; Loading Loading @@ -2052,7 +2051,8 @@ public class GnssLocationProvider extends AbstractLocationProvider implements * this handler. */ private void handleInitialize() { setupNativeGnssService(); // class_init_native() already initializes the GNSS service handle during class loading. setupNativeGnssService(/* reinitializeGnssServiceHandle = */ false); if (native_is_gnss_visibility_control_supported()) { mGnssVisibilityControl = new GnssVisibilityControl(mContext, mLooper); Loading Loading @@ -2214,8 +2214,8 @@ public class GnssLocationProvider extends AbstractLocationProvider implements pw.append(s); } private void setupNativeGnssService() { native_init_once(); private void setupNativeGnssService(boolean reinitializeGnssServiceHandle) { native_init_once(reinitializeGnssServiceHandle); /* * A cycle of native_init() and native_cleanup() is needed so that callbacks are Loading Loading @@ -2244,7 +2244,7 @@ public class GnssLocationProvider extends AbstractLocationProvider implements private static native boolean native_is_gnss_visibility_control_supported(); private static native void native_init_once(); private static native void native_init_once(boolean reinitializeGnssServiceHandle); private native boolean native_init(); Loading
services/core/jni/com_android_server_location_GnssLocationProvider.cpp +18 −3 Original line number Diff line number Diff line Loading @@ -1495,7 +1495,8 @@ struct GnssBatchingCallback_V2_0 : public IGnssBatchingCallback_V2_0 { } }; static void android_location_GnssLocationProvider_class_init_native(JNIEnv* env, jclass clazz) { /* Initializes the GNSS service handle. */ static void android_location_GnssLocationProvider_set_gps_service_handle() { gnssHal_V2_0 = IGnss_V2_0::getService(); if (gnssHal_V2_0 != nullptr) { gnssHal = gnssHal_V2_0; Loading @@ -1514,7 +1515,12 @@ static void android_location_GnssLocationProvider_class_init_native(JNIEnv* env, gnssHal = IGnss_V1_0::getService(); } static void android_location_GnssLocationProvider_init_once(JNIEnv* env, jclass clazz) { /* One time initialization at system boot */ static void android_location_GnssLocationProvider_class_init_native(JNIEnv* env, jclass clazz) { // Initialize the top level gnss HAL handle. android_location_GnssLocationProvider_set_gps_service_handle(); // Cache methodIDs and class IDs. method_reportLocation = env->GetMethodID(clazz, "reportLocation", "(ZLandroid/location/Location;)V"); method_reportStatus = env->GetMethodID(clazz, "reportStatus", "(I)V"); Loading Loading @@ -1638,7 +1644,11 @@ static void android_location_GnssLocationProvider_init_once(JNIEnv* env, jclass (jclass) env->NewGlobalRef(gnssConfiguration_halInterfaceVersionClass); method_halInterfaceVersionCtor = env->GetMethodID(class_gnssConfiguration_halInterfaceVersion, "<init>", "(II)V"); } /* Initialization needed at system boot and whenever GNSS service dies. */ static void android_location_GnssLocationProvider_init_once(JNIEnv* env, jclass clazz, jboolean reinitializeGnssServiceHandle) { /* * Save a pointer to JVM. */ Loading @@ -1647,6 +1657,10 @@ static void android_location_GnssLocationProvider_init_once(JNIEnv* env, jclass LOG_ALWAYS_FATAL("Unable to get Java VM. Error: %d", jvmStatus); } if (reinitializeGnssServiceHandle) { android_location_GnssLocationProvider_set_gps_service_handle(); } if (gnssHal == nullptr) { ALOGE("Unable to get GPS service\n"); return; Loading Loading @@ -1871,6 +1885,7 @@ static jobject android_location_GnssConfiguration_get_gnss_configuration_version return createHalInterfaceVersionJavaObject(env, major, minor); } /* Initialization needed each time the GPS service is shutdown. */ static jboolean android_location_GnssLocationProvider_init(JNIEnv* env, jobject obj) { /* * This must be set before calling into the HAL library. Loading Loading @@ -3026,7 +3041,7 @@ static const JNINativeMethod sMethods[] = { android_location_GnssLocationProvider_class_init_native)}, {"native_is_supported", "()Z", reinterpret_cast<void *>( android_location_GnssLocationProvider_is_supported)}, {"native_init_once", "()V", reinterpret_cast<void *>( {"native_init_once", "(Z)V", reinterpret_cast<void *>( android_location_GnssLocationProvider_init_once)}, {"native_init", "()Z", reinterpret_cast<void *>(android_location_GnssLocationProvider_init)}, {"native_cleanup", "()V", reinterpret_cast<void *>( Loading