| Index: content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java
|
| diff --git a/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java b/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java
|
| index 88785c177e4d7083df2badb0f07f756141072d1b..cadb45a4d8ae03c3eaaa1bc9150a2b4255cc50c9 100644
|
| --- a/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java
|
| +++ b/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java
|
| @@ -293,7 +293,7 @@ import java.util.Map;
|
| };
|
|
|
| if (mVSyncSubscriberCount > 0) {
|
| - // setVSyncNotificationEnabled(true) is called before getVSyncListener.
|
| + // addVSyncSubscriber() is called before getVSyncListener.
|
| vsyncProvider.registerVSyncListener(mVSyncListener);
|
| mVSyncListenerRegistered = true;
|
| }
|
| @@ -302,27 +302,31 @@ import java.util.Map;
|
| }
|
|
|
| @CalledByNative
|
| - void setVSyncNotificationEnabled(boolean enabled) {
|
| - if (!isVSyncNotificationEnabled() && enabled) {
|
| + void addVSyncSubscriber() {
|
| + if (!isVSyncNotificationEnabled()) {
|
| mDidSignalVSyncUsingInputEvent = false;
|
| }
|
| - if (mVSyncProvider != null) {
|
| - if (!mVSyncListenerRegistered && enabled) {
|
| - mVSyncProvider.registerVSyncListener(mVSyncListener);
|
| - mVSyncListenerRegistered = true;
|
| - } else if (mVSyncSubscriberCount == 1 && !enabled) {
|
| - assert mVSyncListenerRegistered;
|
| - mVSyncProvider.unregisterVSyncListener(mVSyncListener);
|
| - mVSyncListenerRegistered = false;
|
| - }
|
| + if (mVSyncProvider != null && !mVSyncListenerRegistered) {
|
| + mVSyncProvider.registerVSyncListener(mVSyncListener);
|
| + mVSyncListenerRegistered = true;
|
| + }
|
| + mVSyncSubscriberCount++;
|
| + }
|
| +
|
| + @CalledByNative
|
| + void removeVSyncSubscriber() {
|
| + if (mVSyncProvider != null && mVSyncSubscriberCount == 1) {
|
| + assert mVSyncListenerRegistered;
|
| + mVSyncProvider.unregisterVSyncListener(mVSyncListener);
|
| + mVSyncListenerRegistered = false;
|
| }
|
| - mVSyncSubscriberCount += enabled ? 1 : -1;
|
| + mVSyncSubscriberCount--;
|
| assert mVSyncSubscriberCount >= 0;
|
| }
|
|
|
| @CalledByNative
|
| private void resetVSyncNotification() {
|
| - while (isVSyncNotificationEnabled()) setVSyncNotificationEnabled(false);
|
| + while (isVSyncNotificationEnabled()) removeVSyncSubscriber();
|
| mVSyncSubscriberCount = 0;
|
| mVSyncListenerRegistered = false;
|
| mNeedAnimate = false;
|
| @@ -336,7 +340,7 @@ import java.util.Map;
|
| private void setNeedsAnimate() {
|
| if (!mNeedAnimate) {
|
| mNeedAnimate = true;
|
| - setVSyncNotificationEnabled(true);
|
| + addVSyncSubscriber();
|
| }
|
| }
|
|
|
| @@ -3096,7 +3100,7 @@ import java.util.Map;
|
| private void animateIfNecessary(long frameTimeMicros) {
|
| if (mNeedAnimate) {
|
| mNeedAnimate = onAnimate(frameTimeMicros);
|
| - if (!mNeedAnimate) setVSyncNotificationEnabled(false);
|
| + if (!mNeedAnimate) removeVSyncSubscriber();
|
| }
|
| }
|
|
|
|
|