From e342f69fc1920dd5083dff9e295147ecf9ecb06e Mon Sep 17 00:00:00 2001 From: etkmao Date: Fri, 10 Oct 2025 18:20:10 +0800 Subject: [PATCH] fix(android): fix vsync accumulation bug --- .../renderer/utils/ChoreographerUtils.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/renderer/native/android/src/main/java/com/tencent/renderer/utils/ChoreographerUtils.java b/renderer/native/android/src/main/java/com/tencent/renderer/utils/ChoreographerUtils.java index ce113fe80..0026d9c39 100644 --- a/renderer/native/android/src/main/java/com/tencent/renderer/utils/ChoreographerUtils.java +++ b/renderer/native/android/src/main/java/com/tencent/renderer/utils/ChoreographerUtils.java @@ -18,24 +18,24 @@ package com.tencent.renderer.utils; import android.view.Choreographer; import androidx.annotation.MainThread; -import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; import java.util.Map.Entry; public class ChoreographerUtils { public static final String DO_FRAME = "frameUpdate"; private static boolean sEnablePostFrame = false; - private static HashMap> sListeners = null; + private static HashMap> sListeners = null; private static void handleDoFrameCallback() { - for (Entry> entry : sListeners.entrySet()) { + for (Entry> entry : sListeners.entrySet()) { Integer rendererId = entry.getKey(); - ArrayList rootList = entry.getValue(); - if (rootList == null) { + HashSet rootSet = entry.getValue(); + if (rootSet == null) { continue; } - for (Integer rootId : rootList) { + for (Integer rootId : rootSet) { EventUtils.sendRootEvent(rendererId, rootId, DO_FRAME, null); } } @@ -62,9 +62,9 @@ public class ChoreographerUtils { if (sListeners == null) { sListeners = new HashMap<>(); } - ArrayList roots = sListeners.get(rendererId); + HashSet roots = sListeners.get(rendererId); if (roots == null) { - roots = new ArrayList<>(); + roots = new HashSet<>(); roots.add(rootId); sListeners.put(rendererId, roots); } else { @@ -87,7 +87,7 @@ public class ChoreographerUtils { if (sListeners == null) { return; } - ArrayList roots = sListeners.get(rendererId); + HashSet roots = sListeners.get(rendererId); if (roots != null) { roots.remove(rootId); if (roots.isEmpty()) {