Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 231b1d78 authored by Android Build Merger (Role)'s avatar Android Build Merger (Role) Committed by Android (Google) Code Review
Browse files

Merge "Merge "Prevent callbacks during DrawableContainer child initialization"...

Merge "Merge "Prevent callbacks during DrawableContainer child initialization" into nyc-dev am: 0f1ae5fa am: 4e6cd801" into nyc-mr1-dev-plus-aosp
parents e0593822 2bc382b4
Loading
Loading
Loading
Loading
+16 −12
Original line number Diff line number Diff line
@@ -78,7 +78,7 @@ static inline void ThrowOnError(
  env->ThrowNew(exceptionClass, methodName);
}

static bool IsValidCallbackThread() {
static bool IsValidCallbackThreadEnvOnly() {
  JNIEnv* env = AndroidRuntime::getJNIEnv();

  if(sCallbackEnv == NULL || sCallbackEnv != env) {
@@ -89,6 +89,20 @@ static bool IsValidCallbackThread() {
  return true;
}

static bool IsValidCallbackThread() {
  // sCallbacksObject is created when FlpHardwareProvider on Java side is
  // initialized. Sometimes the hardware may call a function before the Java
  // side is ready. In order to prevent a system crash, check whether
  // sCallbacksObj has been created. If not, simply ignore this event from
  // hardware.
  if (sCallbacksObj == NULL) {
    ALOGE("Attempt to use FlpHardwareProvider blocked, because it hasn't been initialized.");
    return false;
  }

  return IsValidCallbackThreadEnvOnly();
}

static void BatchingCapabilitiesCallback(int32_t capabilities) {
  if(!IsValidCallbackThread()) {
    return;
@@ -154,7 +168,7 @@ static int SetThreadEvent(ThreadEvent event) {
    }
    case DISASSOCIATE_JVM:
    {
      if (!IsValidCallbackThread()) {
      if (!IsValidCallbackThreadEnvOnly()) {
        ALOGE(
            "Attempted to dissasociate an unnownk callback thread : '%s'.",
            __FUNCTION__
@@ -661,16 +675,6 @@ static void GeofenceMonitorStatusCallback(
    TranslateToObject(lastLocation, locationObject);
  }

  // sCallbacksObject is created when FlpHardwareProvider on Java side is
  // initialized. Sometimes the hardware may call this function before the Java
  // side is ready. In order to prevent the system crash, check whether
  // sCallbacksObj has been created. If not, simply ignore this event from
  // hardware.
  if (sCallbacksObj == NULL) {
    ALOGE("FlpHardwareProvider hasn't been initialized.");
    return;
  }

  sCallbackEnv->CallVoidMethod(
      sCallbacksObj,
      sOnGeofenceMonitorStatus,