diff options
author | Mike Lockwood <lockwood@google.com> | 2010-10-11 11:36:01 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2010-10-11 11:36:01 -0700 |
commit | 4cda1e3e8bb983cf838007acb25f98c78256aea4 (patch) | |
tree | 0b7c3299a399f092d69d05b20d6802074c003b4c | |
parent | 5a8c34565441a2d60289af7c93396814979a7c8a (diff) | |
parent | 2d39374f081031871a15c4532242afe9a8738f9f (diff) | |
download | frameworks_base-4cda1e3e8bb983cf838007acb25f98c78256aea4.zip frameworks_base-4cda1e3e8bb983cf838007acb25f98c78256aea4.tar.gz frameworks_base-4cda1e3e8bb983cf838007acb25f98c78256aea4.tar.bz2 |
am 2d39374f: am 66e60604: Merge "GPS: More HAL initialization cleanup" into gingerbread
Merge commit '2d39374f081031871a15c4532242afe9a8738f9f'
* commit '2d39374f081031871a15c4532242afe9a8738f9f':
GPS: More HAL initialization cleanup
-rwxr-xr-x | services/jni/com_android_server_location_GpsLocationProvider.cpp | 41 |
1 files changed, 32 insertions, 9 deletions
diff --git a/services/jni/com_android_server_location_GpsLocationProvider.cpp b/services/jni/com_android_server_location_GpsLocationProvider.cpp index b9ceaa1..b312fb1 100755 --- a/services/jni/com_android_server_location_GpsLocationProvider.cpp +++ b/services/jni/com_android_server_location_GpsLocationProvider.cpp @@ -326,29 +326,45 @@ static jboolean android_location_GpsLocationProvider_init(JNIEnv* env, jobject o static void android_location_GpsLocationProvider_cleanup(JNIEnv* env, jobject obj) { - sGpsInterface->cleanup(); + const GpsInterface* interface = GetGpsInterface(); + if (interface) + interface->cleanup(); } static jboolean android_location_GpsLocationProvider_set_position_mode(JNIEnv* env, jobject obj, jint mode, jint recurrence, jint min_interval, jint preferred_accuracy, jint preferred_time) { - return (sGpsInterface->set_position_mode(mode, recurrence, min_interval, preferred_accuracy, - preferred_time) == 0); + const GpsInterface* interface = GetGpsInterface(); + if (interface) + return (interface->set_position_mode(mode, recurrence, min_interval, preferred_accuracy, + preferred_time) == 0); + else + return false; } static jboolean android_location_GpsLocationProvider_start(JNIEnv* env, jobject obj) { - return (sGpsInterface->start() == 0); + const GpsInterface* interface = GetGpsInterface(); + if (interface) + return (interface->start() == 0); + else + return false; } static jboolean android_location_GpsLocationProvider_stop(JNIEnv* env, jobject obj) { - return (sGpsInterface->stop() == 0); + const GpsInterface* interface = GetGpsInterface(); + if (interface) + return (interface->stop() == 0); + else + return false; } static void android_location_GpsLocationProvider_delete_aiding_data(JNIEnv* env, jobject obj, jint flags) { - sGpsInterface->delete_aiding_data(flags); + const GpsInterface* interface = GetGpsInterface(); + if (interface) + interface->delete_aiding_data(flags); } static jint android_location_GpsLocationProvider_read_sv_status(JNIEnv* env, jobject obj, @@ -456,19 +472,26 @@ static jint android_location_GpsLocationProvider_read_nmea(JNIEnv* env, jobject static void android_location_GpsLocationProvider_inject_time(JNIEnv* env, jobject obj, jlong time, jlong timeReference, jint uncertainty) { - sGpsInterface->inject_time(time, timeReference, uncertainty); + const GpsInterface* interface = GetGpsInterface(); + if (interface) + interface->inject_time(time, timeReference, uncertainty); } static void android_location_GpsLocationProvider_inject_location(JNIEnv* env, jobject obj, jdouble latitude, jdouble longitude, jfloat accuracy) { - sGpsInterface->inject_location(latitude, longitude, accuracy); + const GpsInterface* interface = GetGpsInterface(); + if (interface) + interface->inject_location(latitude, longitude, accuracy); } static jboolean android_location_GpsLocationProvider_supports_xtra(JNIEnv* env, jobject obj) { if (!sGpsXtraInterface) { - sGpsXtraInterface = (const GpsXtraInterface*)sGpsInterface->get_extension(GPS_XTRA_INTERFACE); + const GpsInterface* interface = GetGpsInterface(); + if (!interface) + return false; + sGpsXtraInterface = (const GpsXtraInterface*)interface->get_extension(GPS_XTRA_INTERFACE); if (sGpsXtraInterface) { int result = sGpsXtraInterface->init(&sGpsXtraCallbacks); if (result) { |