From d68bf1693ccc7da44372b48ad56270b28d36dc45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=8F=8B=E6=9D=BE?= Date: Tue, 1 Jul 2025 00:48:18 +0000 Subject: [PATCH 1/5] =?UTF-8?q?taihe=20same=20=E9=80=82=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 邹友松 --- frameworks/js/ani/src/ani_base_updater.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/frameworks/js/ani/src/ani_base_updater.cpp b/frameworks/js/ani/src/ani_base_updater.cpp index 121c5b20..5b1c88ed 100644 --- a/frameworks/js/ani/src/ani_base_updater.cpp +++ b/frameworks/js/ani/src/ani_base_updater.cpp @@ -30,6 +30,12 @@ void AniBaseUpdater::On(taihe::callback_view taiheCallback(callback); + for (const auto &callbackInfo : callbacks_) { + if (taihe::same(taiheCallback, callbackInfo)) { + ENGINE_LOGI("AniBaseUpdater::on ignored, callback is same"); + return; + } + } if (callbacks_.empty()) { RegisterCallback(); } @@ -39,6 +45,14 @@ void AniBaseUpdater::On(taihe::callback_view &callback) { std::unique_lock lock(mutex_); + taihe::callback taiheCallback(callback); + for (auto it = callbacks_.begin(); it != callbacks_.end();) { + if (taihe::same(*it, callback)) { + callbacks_.erase(it); + continue; + } + ++it; + } if (callbacks_.empty()) { UnRegisterCallback(); } -- Gitee From c6dacc4ea8eb98aba0c30345e2b98db43b0ee053 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=8F=8B=E6=9D=BE?= Date: Tue, 1 Jul 2025 07:19:32 +0000 Subject: [PATCH 2/5] =?UTF-8?q?callback=20=E6=AF=94=E8=BE=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 邹友松 --- frameworks/js/ani/src/ani_base_updater.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frameworks/js/ani/src/ani_base_updater.cpp b/frameworks/js/ani/src/ani_base_updater.cpp index 5b1c88ed..c7bc2e04 100644 --- a/frameworks/js/ani/src/ani_base_updater.cpp +++ b/frameworks/js/ani/src/ani_base_updater.cpp @@ -31,7 +31,7 @@ void AniBaseUpdater::On(taihe::callback_view taiheCallback(callback); for (const auto &callbackInfo : callbacks_) { - if (taihe::same(taiheCallback, callbackInfo)) { + if (taiheCallback == callbackInfo) { ENGINE_LOGI("AniBaseUpdater::on ignored, callback is same"); return; } @@ -47,7 +47,7 @@ void AniBaseUpdater::Off([[maybe_unused]] const taihe::callback taiheCallback(callback); for (auto it = callbacks_.begin(); it != callbacks_.end();) { - if (taihe::same(*it, callback)) { + if (*it == callback) { callbacks_.erase(it); continue; } -- Gitee From 8f670a09c34a780313aceccbfa2afbda3c3d4a5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=8F=8B=E6=9D=BE?= Date: Thu, 3 Jul 2025 11:11:07 +0000 Subject: [PATCH 3/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=BE=AA=E7=8E=AF?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 邹友松 --- frameworks/js/ani/src/ani_base_updater.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frameworks/js/ani/src/ani_base_updater.cpp b/frameworks/js/ani/src/ani_base_updater.cpp index c7bc2e04..16c6f489 100644 --- a/frameworks/js/ani/src/ani_base_updater.cpp +++ b/frameworks/js/ani/src/ani_base_updater.cpp @@ -48,10 +48,10 @@ void AniBaseUpdater::Off([[maybe_unused]] const taihe::callback taiheCallback(callback); for (auto it = callbacks_.begin(); it != callbacks_.end();) { if (*it == callback) { - callbacks_.erase(it); - continue; + it = callbacks_.erase(it); + } else { + ++it; } - ++it; } if (callbacks_.empty()) { UnRegisterCallback(); -- Gitee From b0276b9a01bdc732c9ec84ede01d3eef9c118968 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=8F=8B=E6=9D=BE?= Date: Thu, 3 Jul 2025 11:23:12 +0000 Subject: [PATCH 4/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9callback=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 邹友松 --- frameworks/js/ani/src/ani_base_updater.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/frameworks/js/ani/src/ani_base_updater.cpp b/frameworks/js/ani/src/ani_base_updater.cpp index 16c6f489..1d6b1c10 100644 --- a/frameworks/js/ani/src/ani_base_updater.cpp +++ b/frameworks/js/ani/src/ani_base_updater.cpp @@ -45,7 +45,6 @@ void AniBaseUpdater::On(taihe::callback_view &callback) { std::unique_lock lock(mutex_); - taihe::callback taiheCallback(callback); for (auto it = callbacks_.begin(); it != callbacks_.end();) { if (*it == callback) { it = callbacks_.erase(it); -- Gitee From 9a8817e91e5ce5b2543761d4f7c52fb1bc30ed85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=8F=8B=E6=9D=BE?= Date: Thu, 3 Jul 2025 12:22:14 +0000 Subject: [PATCH 5/5] =?UTF-8?q?=E4=BC=98=E5=8C=96erase=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 邹友松 --- frameworks/js/ani/src/ani_base_updater.cpp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/frameworks/js/ani/src/ani_base_updater.cpp b/frameworks/js/ani/src/ani_base_updater.cpp index 1d6b1c10..5ed53565 100644 --- a/frameworks/js/ani/src/ani_base_updater.cpp +++ b/frameworks/js/ani/src/ani_base_updater.cpp @@ -45,13 +45,10 @@ void AniBaseUpdater::On(taihe::callback_view &callback) { std::unique_lock lock(mutex_); - for (auto it = callbacks_.begin(); it != callbacks_.end();) { - if (*it == callback) { - it = callbacks_.erase(it); - } else { - ++it; - } - } + callbacks_.erase( + std::remove_if(callbacks_.begin(), callbacks_.end(), + [&](const auto &cb) { return cb == callback; }), + callbacks_.end()); if (callbacks_.empty()) { UnRegisterCallback(); } -- Gitee