Loading core/jni/android_graphics_BLASTBufferQueue.cpp +8 −6 Original line number Diff line number Diff line Loading @@ -72,12 +72,14 @@ public: } void onTransactionHang(const std::string& reason) { if (mTransactionHangObject) { if (!mTransactionHangObject) { return; } JNIEnv* env = getenv(mVm); ScopedLocalRef<jstring> jReason(env, env->NewStringUTF(reason.c_str())); getenv(mVm)->CallVoidMethod(mTransactionHangObject, gTransactionHangCallback.onTransactionHang, jReason.get()); } DieIfException(env, "Uncaught exception in TransactionHangCallback."); } private: Loading core/jni/android_view_SurfaceControl.cpp +3 −0 Original line number Diff line number Diff line Loading @@ -285,6 +285,7 @@ public: JNIEnv* env = getenv(); env->CallVoidMethod(mTransactionCommittedListenerObject, gTransactionCommittedListenerClassInfo.onTransactionCommitted); DieIfException(env, "Uncaught exception in TransactionCommittedListener."); } static void transactionCallbackThunk(void* context, nsecs_t /*latchTime*/, Loading Loading @@ -325,6 +326,7 @@ public: binder::Status onWindowInfosReported() override { JNIEnv* env = getenv(); env->CallVoidMethod(mListener, gRunnableClassInfo.run); DieIfException(env, "Uncaught exception in WindowInfosReportedListener."); return binder::Status::ok(); } Loading Loading @@ -356,6 +358,7 @@ public: env->CallVoidMethod(mTrustedPresentationCallback, gTrustedPresentationCallbackClassInfo.onTrustedPresentationChanged, inTrustedPresentationState); DieIfException(env, "Uncaught exception in TrustedPresentationCallback."); } void addCallbackRef(const sp<SurfaceComposerClient::PresentationCallbackRAII>& callbackRef) { Loading core/jni/core_jni_helpers.h +9 −0 Original line number Diff line number Diff line Loading @@ -134,6 +134,15 @@ static inline JNIEnv* GetOrAttachJNIEnvironment(JavaVM* jvm, jint version = JNI_ return env; } static inline void DieIfException(JNIEnv* env, const char* message) { if (env->ExceptionCheck()) { jnihelp::ExpandableString summary; jnihelp::ExpandableStringInitialize(&summary); jnihelp::GetStackTraceOrSummary(env, nullptr, &summary); LOG_ALWAYS_FATAL("%s\n%s", message, summary.data); } } } // namespace android #endif // CORE_JNI_HELPERS Loading
core/jni/android_graphics_BLASTBufferQueue.cpp +8 −6 Original line number Diff line number Diff line Loading @@ -72,12 +72,14 @@ public: } void onTransactionHang(const std::string& reason) { if (mTransactionHangObject) { if (!mTransactionHangObject) { return; } JNIEnv* env = getenv(mVm); ScopedLocalRef<jstring> jReason(env, env->NewStringUTF(reason.c_str())); getenv(mVm)->CallVoidMethod(mTransactionHangObject, gTransactionHangCallback.onTransactionHang, jReason.get()); } DieIfException(env, "Uncaught exception in TransactionHangCallback."); } private: Loading
core/jni/android_view_SurfaceControl.cpp +3 −0 Original line number Diff line number Diff line Loading @@ -285,6 +285,7 @@ public: JNIEnv* env = getenv(); env->CallVoidMethod(mTransactionCommittedListenerObject, gTransactionCommittedListenerClassInfo.onTransactionCommitted); DieIfException(env, "Uncaught exception in TransactionCommittedListener."); } static void transactionCallbackThunk(void* context, nsecs_t /*latchTime*/, Loading Loading @@ -325,6 +326,7 @@ public: binder::Status onWindowInfosReported() override { JNIEnv* env = getenv(); env->CallVoidMethod(mListener, gRunnableClassInfo.run); DieIfException(env, "Uncaught exception in WindowInfosReportedListener."); return binder::Status::ok(); } Loading Loading @@ -356,6 +358,7 @@ public: env->CallVoidMethod(mTrustedPresentationCallback, gTrustedPresentationCallbackClassInfo.onTrustedPresentationChanged, inTrustedPresentationState); DieIfException(env, "Uncaught exception in TrustedPresentationCallback."); } void addCallbackRef(const sp<SurfaceComposerClient::PresentationCallbackRAII>& callbackRef) { Loading
core/jni/core_jni_helpers.h +9 −0 Original line number Diff line number Diff line Loading @@ -134,6 +134,15 @@ static inline JNIEnv* GetOrAttachJNIEnvironment(JavaVM* jvm, jint version = JNI_ return env; } static inline void DieIfException(JNIEnv* env, const char* message) { if (env->ExceptionCheck()) { jnihelp::ExpandableString summary; jnihelp::ExpandableStringInitialize(&summary); jnihelp::GetStackTraceOrSummary(env, nullptr, &summary); LOG_ALWAYS_FATAL("%s\n%s", message, summary.data); } } } // namespace android #endif // CORE_JNI_HELPERS