Loading core/java/android/view/Choreographer.java +13 −0 Original line number Diff line number Diff line Loading @@ -232,6 +232,19 @@ public final class Choreographer { return sThreadInstance.get(); } /** Destroys the calling thread's choreographer * @hide */ public static void releaseInstance() { Choreographer old = sThreadInstance.get(); sThreadInstance.remove(); old.dispose(); } private void dispose() { mDisplayEventReceiver.dispose(); } /** * The amount of time, in milliseconds, between each frame of the animation. * <p> Loading core/java/com/android/internal/policy/BackdropFrameRenderer.java +1 −0 Original line number Diff line number Diff line Loading @@ -217,6 +217,7 @@ public class BackdropFrameRenderer extends Thread implements Choreographer.Frame synchronized (this) { // Make sure no more messages are being sent. mChoreographer = null; Choreographer.releaseInstance(); } } Loading core/jni/android_view_DisplayEventReceiver.cpp +3 −5 Original line number Diff line number Diff line Loading @@ -81,14 +81,12 @@ NativeDisplayEventReceiver::NativeDisplayEventReceiver(JNIEnv* env, NativeDisplayEventReceiver::~NativeDisplayEventReceiver() { JNIEnv* env = AndroidRuntime::getJNIEnv(); env->DeleteGlobalRef(mReceiverWeakGlobal); ALOGV("receiver %p ~ dtor display event receiver.", this); } void NativeDisplayEventReceiver::dispose() { ALOGV("receiver %p ~ Disposing display event receiver.", this); if (!mReceiver.initCheck()) { mMessageQueue->getLooper()->removeFd(mReceiver.getFd()); } DisplayEventDispatcher::dispose(); } void NativeDisplayEventReceiver::dispatchVsync(nsecs_t timestamp, int32_t id, uint32_t count) { Loading Loading @@ -143,7 +141,7 @@ static jlong nativeInit(JNIEnv* env, jclass clazz, jobject receiverWeak, } static void nativeDispose(JNIEnv* env, jclass clazz, jlong receiverPtr) { sp<NativeDisplayEventReceiver> receiver = NativeDisplayEventReceiver* receiver = reinterpret_cast<NativeDisplayEventReceiver*>(receiverPtr); receiver->dispose(); receiver->decStrong(gDisplayEventReceiverClassInfo.clazz); // drop reference held by the object Loading Loading
core/java/android/view/Choreographer.java +13 −0 Original line number Diff line number Diff line Loading @@ -232,6 +232,19 @@ public final class Choreographer { return sThreadInstance.get(); } /** Destroys the calling thread's choreographer * @hide */ public static void releaseInstance() { Choreographer old = sThreadInstance.get(); sThreadInstance.remove(); old.dispose(); } private void dispose() { mDisplayEventReceiver.dispose(); } /** * The amount of time, in milliseconds, between each frame of the animation. * <p> Loading
core/java/com/android/internal/policy/BackdropFrameRenderer.java +1 −0 Original line number Diff line number Diff line Loading @@ -217,6 +217,7 @@ public class BackdropFrameRenderer extends Thread implements Choreographer.Frame synchronized (this) { // Make sure no more messages are being sent. mChoreographer = null; Choreographer.releaseInstance(); } } Loading
core/jni/android_view_DisplayEventReceiver.cpp +3 −5 Original line number Diff line number Diff line Loading @@ -81,14 +81,12 @@ NativeDisplayEventReceiver::NativeDisplayEventReceiver(JNIEnv* env, NativeDisplayEventReceiver::~NativeDisplayEventReceiver() { JNIEnv* env = AndroidRuntime::getJNIEnv(); env->DeleteGlobalRef(mReceiverWeakGlobal); ALOGV("receiver %p ~ dtor display event receiver.", this); } void NativeDisplayEventReceiver::dispose() { ALOGV("receiver %p ~ Disposing display event receiver.", this); if (!mReceiver.initCheck()) { mMessageQueue->getLooper()->removeFd(mReceiver.getFd()); } DisplayEventDispatcher::dispose(); } void NativeDisplayEventReceiver::dispatchVsync(nsecs_t timestamp, int32_t id, uint32_t count) { Loading Loading @@ -143,7 +141,7 @@ static jlong nativeInit(JNIEnv* env, jclass clazz, jobject receiverWeak, } static void nativeDispose(JNIEnv* env, jclass clazz, jlong receiverPtr) { sp<NativeDisplayEventReceiver> receiver = NativeDisplayEventReceiver* receiver = reinterpret_cast<NativeDisplayEventReceiver*>(receiverPtr); receiver->dispose(); receiver->decStrong(gDisplayEventReceiverClassInfo.clazz); // drop reference held by the object Loading