From 7dc4709e56255cb74e76bfdcdc4c34bd6fc7bce1 Mon Sep 17 00:00:00 2001 From: fzyzcjy Date: Wed, 23 Nov 2022 13:46:17 +0800 Subject: [PATCH 01/11] impl --- shell/common/vsync_waiter_fallback.cc | 10 ++++++++-- shell/platform/android/vsync_waiter_android.cc | 17 +++++++++++++---- .../ios/framework/Source/vsync_waiter_ios.mm | 7 +++++-- 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/shell/common/vsync_waiter_fallback.cc b/shell/common/vsync_waiter_fallback.cc index 89c3fb0c805fc..d65bc542e4600 100644 --- a/shell/common/vsync_waiter_fallback.cc +++ b/shell/common/vsync_waiter_fallback.cc @@ -35,13 +35,19 @@ VsyncWaiterFallback::~VsyncWaiterFallback() = default; // |VsyncWaiter| void VsyncWaiterFallback::AwaitVSync() { - TRACE_EVENT0("flutter", "VSYNC"); - constexpr fml::TimeDelta kSingleFrameInterval = fml::TimeDelta::FromSecondsF(1.0 / 60.0); auto frame_start_time = SnapToNextTick(fml::TimePoint::Now(), phase_, kSingleFrameInterval); auto frame_target_time = frame_start_time + kSingleFrameInterval; + + TRACE_EVENT2( + "flutter", "VsyncAlike", "frame_start_time", + std::to_string(frame_start_time.ToEpochDelta().ToMicroseconds()).c_str(), + "frame_target_time", + std::to_string(frame_target_time.ToEpochDelta().ToMicroseconds()) + .c_str()); + std::weak_ptr weak_this = std::static_pointer_cast(shared_from_this()); diff --git a/shell/platform/android/vsync_waiter_android.cc b/shell/platform/android/vsync_waiter_android.cc index 84e477e3ebac0..6c00da7504a55 100644 --- a/shell/platform/android/vsync_waiter_android.cc +++ b/shell/platform/android/vsync_waiter_android.cc @@ -52,8 +52,6 @@ void VsyncWaiterAndroid::AwaitVSync() { // static void VsyncWaiterAndroid::OnVsyncFromNDK(int64_t frame_nanos, void* data) { - TRACE_EVENT0("flutter", "VSYNC"); - auto frame_time = fml::TimePoint::FromEpochDelta( fml::TimeDelta::FromNanoseconds(frame_nanos)); auto now = fml::TimePoint::Now(); @@ -62,6 +60,13 @@ void VsyncWaiterAndroid::OnVsyncFromNDK(int64_t frame_nanos, void* data) { } auto target_time = frame_time + fml::TimeDelta::FromNanoseconds( 1000000000.0 / g_refresh_rate_); + + TRACE_EVENT2( + "flutter", "VsyncAlike", "frame_start_time", + std::to_string(frame_time.ToEpochDelta().ToMicroseconds()).c_str(), + "frame_target_time", + std::to_string(target_time.ToEpochDelta().ToMicroseconds()).c_str()); + auto* weak_this = reinterpret_cast*>(data); ConsumePendingCallback(weak_this, frame_time, target_time); } @@ -72,13 +77,17 @@ void VsyncWaiterAndroid::OnVsyncFromJava(JNIEnv* env, jlong frameDelayNanos, jlong refreshPeriodNanos, jlong java_baton) { - TRACE_EVENT0("flutter", "VSYNC"); - auto frame_time = fml::TimePoint::Now() - fml::TimeDelta::FromNanoseconds(frameDelayNanos); auto target_time = frame_time + fml::TimeDelta::FromNanoseconds(refreshPeriodNanos); + TRACE_EVENT2( + "flutter", "VsyncAlike", "frame_start_time", + std::to_string(frame_time.ToEpochDelta().ToMicroseconds()).c_str(), + "frame_target_time", + std::to_string(target_time.ToEpochDelta().ToMicroseconds()).c_str()); + auto* weak_this = reinterpret_cast*>(java_baton); ConsumePendingCallback(weak_this, frame_time, target_time); } diff --git a/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.mm b/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.mm index 6c6a45477858a..0a99feedba5f0 100644 --- a/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.mm +++ b/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.mm @@ -102,14 +102,17 @@ - (void)pause { } - (void)onDisplayLink:(CADisplayLink*)link { - TRACE_EVENT0("flutter", "VSYNC"); - CFTimeInterval delay = CACurrentMediaTime() - link.timestamp; fml::TimePoint frame_start_time = fml::TimePoint::Now() - fml::TimeDelta::FromSecondsF(delay); CFTimeInterval duration = link.targetTimestamp - link.timestamp; fml::TimePoint frame_target_time = frame_start_time + fml::TimeDelta::FromSecondsF(duration); + TRACE_EVENT2("flutter", "VsyncAlike", "frame_start_time", + std::to_string(frame_start_time.ToEpochDelta().ToMicroseconds()).c_str(), + "frame_target_time", + std::to_string(frame_target_time.ToEpochDelta().ToMicroseconds()).c_str()); + std::unique_ptr recorder = std::make_unique(); From 69f99c1f7baeec87dee4a82286a1ec4c9230b314 Mon Sep 17 00:00:00 2001 From: fzyzcjy Date: Wed, 23 Nov 2022 14:07:29 +0800 Subject: [PATCH 02/11] fix --- shell/common/vsync_waiter_fallback.cc | 13 +++++----- .../platform/android/vsync_waiter_android.cc | 24 +++++++++++-------- .../ios/framework/Source/vsync_waiter_ios.mm | 10 ++++---- 3 files changed, 27 insertions(+), 20 deletions(-) diff --git a/shell/common/vsync_waiter_fallback.cc b/shell/common/vsync_waiter_fallback.cc index d65bc542e4600..7b413c9b9f3a3 100644 --- a/shell/common/vsync_waiter_fallback.cc +++ b/shell/common/vsync_waiter_fallback.cc @@ -41,12 +41,13 @@ void VsyncWaiterFallback::AwaitVSync() { SnapToNextTick(fml::TimePoint::Now(), phase_, kSingleFrameInterval); auto frame_target_time = frame_start_time + kSingleFrameInterval; - TRACE_EVENT2( - "flutter", "VsyncAlike", "frame_start_time", - std::to_string(frame_start_time.ToEpochDelta().ToMicroseconds()).c_str(), - "frame_target_time", - std::to_string(frame_target_time.ToEpochDelta().ToMicroseconds()) - .c_str()); + std::string frame_start_time_str = + std::to_string(frame_start_time.ToEpochDelta().ToMicroseconds()); + const std::string& frame_target_time_str = + std::to_string(frame_target_time.ToEpochDelta().ToMicroseconds()); + TRACE_EVENT2("flutter", "VsyncAlike", "frame_start_time", + frame_start_time_str.c_str(), "frame_target_time", + frame_target_time_str.c_str()); std::weak_ptr weak_this = std::static_pointer_cast(shared_from_this()); diff --git a/shell/platform/android/vsync_waiter_android.cc b/shell/platform/android/vsync_waiter_android.cc index 6c00da7504a55..6ff42723ffb3e 100644 --- a/shell/platform/android/vsync_waiter_android.cc +++ b/shell/platform/android/vsync_waiter_android.cc @@ -61,11 +61,13 @@ void VsyncWaiterAndroid::OnVsyncFromNDK(int64_t frame_nanos, void* data) { auto target_time = frame_time + fml::TimeDelta::FromNanoseconds( 1000000000.0 / g_refresh_rate_); - TRACE_EVENT2( - "flutter", "VsyncAlike", "frame_start_time", - std::to_string(frame_time.ToEpochDelta().ToMicroseconds()).c_str(), - "frame_target_time", - std::to_string(target_time.ToEpochDelta().ToMicroseconds()).c_str()); + std::string frame_start_time_str = + std::to_string(start_time.ToEpochDelta().ToMicroseconds()); + const std::string& frame_target_time_str = + std::to_string(target_time.ToEpochDelta().ToMicroseconds()); + TRACE_EVENT2("flutter", "VsyncAlike", "frame_start_time", + frame_start_time_str.c_str(), "frame_target_time", + frame_target_time_str.c_str()); auto* weak_this = reinterpret_cast*>(data); ConsumePendingCallback(weak_this, frame_time, target_time); @@ -82,11 +84,13 @@ void VsyncWaiterAndroid::OnVsyncFromJava(JNIEnv* env, auto target_time = frame_time + fml::TimeDelta::FromNanoseconds(refreshPeriodNanos); - TRACE_EVENT2( - "flutter", "VsyncAlike", "frame_start_time", - std::to_string(frame_time.ToEpochDelta().ToMicroseconds()).c_str(), - "frame_target_time", - std::to_string(target_time.ToEpochDelta().ToMicroseconds()).c_str()); + std::string frame_start_time_str = + std::to_string(start_time.ToEpochDelta().ToMicroseconds()); + const std::string& frame_target_time_str = + std::to_string(target_time.ToEpochDelta().ToMicroseconds()); + TRACE_EVENT2("flutter", "VsyncAlike", "frame_start_time", + frame_start_time_str.c_str(), "frame_target_time", + frame_target_time_str.c_str()); auto* weak_this = reinterpret_cast*>(java_baton); ConsumePendingCallback(weak_this, frame_time, target_time); diff --git a/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.mm b/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.mm index 0a99feedba5f0..6188b3477b487 100644 --- a/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.mm +++ b/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.mm @@ -108,10 +108,12 @@ - (void)onDisplayLink:(CADisplayLink*)link { CFTimeInterval duration = link.targetTimestamp - link.timestamp; fml::TimePoint frame_target_time = frame_start_time + fml::TimeDelta::FromSecondsF(duration); - TRACE_EVENT2("flutter", "VsyncAlike", "frame_start_time", - std::to_string(frame_start_time.ToEpochDelta().ToMicroseconds()).c_str(), - "frame_target_time", - std::to_string(frame_target_time.ToEpochDelta().ToMicroseconds()).c_str()); + std::string frame_start_time_str = + std::to_string(frame_start_time.ToEpochDelta().ToMicroseconds()); + const std::string& frame_target_time_str = + std::to_string(frame_target_time.ToEpochDelta().ToMicroseconds()); + TRACE_EVENT2("flutter", "VsyncAlike", "frame_start_time", frame_start_time_str.c_str(), + "frame_target_time", frame_target_time_str.c_str()); std::unique_ptr recorder = std::make_unique(); From 3856bb5fcb26bc37e24724328ccbd12ca7acd45d Mon Sep 17 00:00:00 2001 From: fzyzcjy Date: Wed, 23 Nov 2022 14:08:48 +0800 Subject: [PATCH 03/11] minor --- shell/common/vsync_waiter_fallback.cc | 4 ++-- shell/platform/android/vsync_waiter_android.cc | 8 ++++---- .../darwin/ios/framework/Source/vsync_waiter_ios.mm | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/shell/common/vsync_waiter_fallback.cc b/shell/common/vsync_waiter_fallback.cc index 7b413c9b9f3a3..f8bc8f3b270c6 100644 --- a/shell/common/vsync_waiter_fallback.cc +++ b/shell/common/vsync_waiter_fallback.cc @@ -41,9 +41,9 @@ void VsyncWaiterFallback::AwaitVSync() { SnapToNextTick(fml::TimePoint::Now(), phase_, kSingleFrameInterval); auto frame_target_time = frame_start_time + kSingleFrameInterval; - std::string frame_start_time_str = + const std::string frame_start_time_str = std::to_string(frame_start_time.ToEpochDelta().ToMicroseconds()); - const std::string& frame_target_time_str = + const std::string frame_target_time_str = std::to_string(frame_target_time.ToEpochDelta().ToMicroseconds()); TRACE_EVENT2("flutter", "VsyncAlike", "frame_start_time", frame_start_time_str.c_str(), "frame_target_time", diff --git a/shell/platform/android/vsync_waiter_android.cc b/shell/platform/android/vsync_waiter_android.cc index 6ff42723ffb3e..7237df83ccda9 100644 --- a/shell/platform/android/vsync_waiter_android.cc +++ b/shell/platform/android/vsync_waiter_android.cc @@ -61,9 +61,9 @@ void VsyncWaiterAndroid::OnVsyncFromNDK(int64_t frame_nanos, void* data) { auto target_time = frame_time + fml::TimeDelta::FromNanoseconds( 1000000000.0 / g_refresh_rate_); - std::string frame_start_time_str = + const std::string frame_start_time_str = std::to_string(start_time.ToEpochDelta().ToMicroseconds()); - const std::string& frame_target_time_str = + const std::string frame_target_time_str = std::to_string(target_time.ToEpochDelta().ToMicroseconds()); TRACE_EVENT2("flutter", "VsyncAlike", "frame_start_time", frame_start_time_str.c_str(), "frame_target_time", @@ -84,9 +84,9 @@ void VsyncWaiterAndroid::OnVsyncFromJava(JNIEnv* env, auto target_time = frame_time + fml::TimeDelta::FromNanoseconds(refreshPeriodNanos); - std::string frame_start_time_str = + const std::string frame_start_time_str = std::to_string(start_time.ToEpochDelta().ToMicroseconds()); - const std::string& frame_target_time_str = + const std::string frame_target_time_str = std::to_string(target_time.ToEpochDelta().ToMicroseconds()); TRACE_EVENT2("flutter", "VsyncAlike", "frame_start_time", frame_start_time_str.c_str(), "frame_target_time", diff --git a/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.mm b/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.mm index 6188b3477b487..915ed59b8083f 100644 --- a/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.mm +++ b/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.mm @@ -108,9 +108,9 @@ - (void)onDisplayLink:(CADisplayLink*)link { CFTimeInterval duration = link.targetTimestamp - link.timestamp; fml::TimePoint frame_target_time = frame_start_time + fml::TimeDelta::FromSecondsF(duration); - std::string frame_start_time_str = + const std::string frame_start_time_str = std::to_string(frame_start_time.ToEpochDelta().ToMicroseconds()); - const std::string& frame_target_time_str = + const std::string frame_target_time_str = std::to_string(frame_target_time.ToEpochDelta().ToMicroseconds()); TRACE_EVENT2("flutter", "VsyncAlike", "frame_start_time", frame_start_time_str.c_str(), "frame_target_time", frame_target_time_str.c_str()); From 2f0f3d30eaab9bc16f0a3770cf827b76c02b976a Mon Sep 17 00:00:00 2001 From: fzyzcjy Date: Wed, 23 Nov 2022 14:29:23 +0800 Subject: [PATCH 04/11] fix --- shell/platform/android/vsync_waiter_android.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell/platform/android/vsync_waiter_android.cc b/shell/platform/android/vsync_waiter_android.cc index 7237df83ccda9..393e0c2d7e75f 100644 --- a/shell/platform/android/vsync_waiter_android.cc +++ b/shell/platform/android/vsync_waiter_android.cc @@ -62,7 +62,7 @@ void VsyncWaiterAndroid::OnVsyncFromNDK(int64_t frame_nanos, void* data) { 1000000000.0 / g_refresh_rate_); const std::string frame_start_time_str = - std::to_string(start_time.ToEpochDelta().ToMicroseconds()); + std::to_string(frame_time.ToEpochDelta().ToMicroseconds()); const std::string frame_target_time_str = std::to_string(target_time.ToEpochDelta().ToMicroseconds()); TRACE_EVENT2("flutter", "VsyncAlike", "frame_start_time", From 4e08e44136cbd9f316370ebce99a00026f5dc93e Mon Sep 17 00:00:00 2001 From: fzyzcjy Date: Wed, 23 Nov 2022 14:39:20 +0800 Subject: [PATCH 05/11] fix --- shell/platform/android/vsync_waiter_android.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell/platform/android/vsync_waiter_android.cc b/shell/platform/android/vsync_waiter_android.cc index 393e0c2d7e75f..6fd0b25994606 100644 --- a/shell/platform/android/vsync_waiter_android.cc +++ b/shell/platform/android/vsync_waiter_android.cc @@ -85,7 +85,7 @@ void VsyncWaiterAndroid::OnVsyncFromJava(JNIEnv* env, frame_time + fml::TimeDelta::FromNanoseconds(refreshPeriodNanos); const std::string frame_start_time_str = - std::to_string(start_time.ToEpochDelta().ToMicroseconds()); + std::to_string(frame_time.ToEpochDelta().ToMicroseconds()); const std::string frame_target_time_str = std::to_string(target_time.ToEpochDelta().ToMicroseconds()); TRACE_EVENT2("flutter", "VsyncAlike", "frame_start_time", From 7abcdec59facc0567b5fb19923674e0a78c839ed Mon Sep 17 00:00:00 2001 From: fzyzcjy <5236035+fzyzcjy@users.noreply.github.com> Date: Wed, 23 Nov 2022 15:29:09 +0800 Subject: [PATCH 06/11] bump ci --- shell/common/vsync_waiter_fallback.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/shell/common/vsync_waiter_fallback.cc b/shell/common/vsync_waiter_fallback.cc index f8bc8f3b270c6..d985c17f28a4b 100644 --- a/shell/common/vsync_waiter_fallback.cc +++ b/shell/common/vsync_waiter_fallback.cc @@ -41,12 +41,12 @@ void VsyncWaiterFallback::AwaitVSync() { SnapToNextTick(fml::TimePoint::Now(), phase_, kSingleFrameInterval); auto frame_target_time = frame_start_time + kSingleFrameInterval; - const std::string frame_start_time_str = + const std::string start_time_str = std::to_string(frame_start_time.ToEpochDelta().ToMicroseconds()); const std::string frame_target_time_str = std::to_string(frame_target_time.ToEpochDelta().ToMicroseconds()); TRACE_EVENT2("flutter", "VsyncAlike", "frame_start_time", - frame_start_time_str.c_str(), "frame_target_time", + start_time_str.c_str(), "frame_target_time", frame_target_time_str.c_str()); std::weak_ptr weak_this = From 2412cb61d1a3e9450f3934704fdbc71bf9eefba7 Mon Sep 17 00:00:00 2001 From: fzyzcjy Date: Wed, 7 Dec 2022 07:28:54 +0800 Subject: [PATCH 07/11] rename --- shell/common/vsync_waiter_fallback.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell/common/vsync_waiter_fallback.cc b/shell/common/vsync_waiter_fallback.cc index d985c17f28a4b..2d7bd222324a4 100644 --- a/shell/common/vsync_waiter_fallback.cc +++ b/shell/common/vsync_waiter_fallback.cc @@ -45,7 +45,7 @@ void VsyncWaiterFallback::AwaitVSync() { std::to_string(frame_start_time.ToEpochDelta().ToMicroseconds()); const std::string frame_target_time_str = std::to_string(frame_target_time.ToEpochDelta().ToMicroseconds()); - TRACE_EVENT2("flutter", "VsyncAlike", "frame_start_time", + TRACE_EVENT2("flutter", "PlatformVsync", "frame_start_time", start_time_str.c_str(), "frame_target_time", frame_target_time_str.c_str()); From 02fa9b6048daaf1237c299c857d71cce73e557a0 Mon Sep 17 00:00:00 2001 From: fzyzcjy Date: Wed, 7 Dec 2022 07:37:37 +0800 Subject: [PATCH 08/11] rename++ --- shell/platform/android/vsync_waiter_android.cc | 4 ++-- .../platform/darwin/ios/framework/Source/vsync_waiter_ios.mm | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/shell/platform/android/vsync_waiter_android.cc b/shell/platform/android/vsync_waiter_android.cc index 6fd0b25994606..2e9d4f499e262 100644 --- a/shell/platform/android/vsync_waiter_android.cc +++ b/shell/platform/android/vsync_waiter_android.cc @@ -65,7 +65,7 @@ void VsyncWaiterAndroid::OnVsyncFromNDK(int64_t frame_nanos, void* data) { std::to_string(frame_time.ToEpochDelta().ToMicroseconds()); const std::string frame_target_time_str = std::to_string(target_time.ToEpochDelta().ToMicroseconds()); - TRACE_EVENT2("flutter", "VsyncAlike", "frame_start_time", + TRACE_EVENT2("flutter", "PlatformVsync", "frame_start_time", frame_start_time_str.c_str(), "frame_target_time", frame_target_time_str.c_str()); @@ -88,7 +88,7 @@ void VsyncWaiterAndroid::OnVsyncFromJava(JNIEnv* env, std::to_string(frame_time.ToEpochDelta().ToMicroseconds()); const std::string frame_target_time_str = std::to_string(target_time.ToEpochDelta().ToMicroseconds()); - TRACE_EVENT2("flutter", "VsyncAlike", "frame_start_time", + TRACE_EVENT2("flutter", "PlatformVsync", "frame_start_time", frame_start_time_str.c_str(), "frame_target_time", frame_target_time_str.c_str()); diff --git a/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.mm b/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.mm index 915ed59b8083f..d1c6784393feb 100644 --- a/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.mm +++ b/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.mm @@ -112,7 +112,7 @@ - (void)onDisplayLink:(CADisplayLink*)link { std::to_string(frame_start_time.ToEpochDelta().ToMicroseconds()); const std::string frame_target_time_str = std::to_string(frame_target_time.ToEpochDelta().ToMicroseconds()); - TRACE_EVENT2("flutter", "VsyncAlike", "frame_start_time", frame_start_time_str.c_str(), + TRACE_EVENT2("flutter", "PlatformVsync", "frame_start_time", frame_start_time_str.c_str(), "frame_target_time", frame_target_time_str.c_str()); std::unique_ptr recorder = From a11c77208a034ccd217c2dd709f225ad5f721807 Mon Sep 17 00:00:00 2001 From: fzyzcjy Date: Wed, 7 Dec 2022 08:28:49 +0800 Subject: [PATCH 09/11] add macro --- fml/trace_event.h | 11 ++++++++++ shell/common/vsync_waiter_fallback.cc | 11 ++++------ .../platform/android/vsync_waiter_android.cc | 22 +++++++------------ .../ios/framework/Source/vsync_waiter_ios.mm | 9 +++----- 4 files changed, 26 insertions(+), 27 deletions(-) diff --git a/fml/trace_event.h b/fml/trace_event.h index d6749e61acb87..3851dd0a3fd53 100644 --- a/fml/trace_event.h +++ b/fml/trace_event.h @@ -101,6 +101,17 @@ arg2_name, arg2_val); \ __FML__AUTO_TRACE_END(name) +#define TRACE_EVENT2_INT(category_group, name, arg1_name, arg1_val, arg2_name, \ + arg2_val) \ + { \ + const std::string arg1_val_str = std::to_string(arg1_val); \ + const std::string arg2_val_str = std::to_string(arg2_val); \ + ::fml::tracing::TraceEvent2(category_group, name, arg1_name, \ + arg1_val_str.c_str(), arg2_name, \ + arg2_val_str.c_str()); \ + } \ + __FML__AUTO_TRACE_END(name) + #define TRACE_EVENT_ASYNC_BEGIN0(category_group, name, id) \ ::fml::tracing::TraceEventAsyncBegin0(category_group, name, id); diff --git a/shell/common/vsync_waiter_fallback.cc b/shell/common/vsync_waiter_fallback.cc index 2d7bd222324a4..bad751e4afd89 100644 --- a/shell/common/vsync_waiter_fallback.cc +++ b/shell/common/vsync_waiter_fallback.cc @@ -41,13 +41,10 @@ void VsyncWaiterFallback::AwaitVSync() { SnapToNextTick(fml::TimePoint::Now(), phase_, kSingleFrameInterval); auto frame_target_time = frame_start_time + kSingleFrameInterval; - const std::string start_time_str = - std::to_string(frame_start_time.ToEpochDelta().ToMicroseconds()); - const std::string frame_target_time_str = - std::to_string(frame_target_time.ToEpochDelta().ToMicroseconds()); - TRACE_EVENT2("flutter", "PlatformVsync", "frame_start_time", - start_time_str.c_str(), "frame_target_time", - frame_target_time_str.c_str()); + TRACE_EVENT2_INT("flutter", "PlatformVsync", "frame_start_time", + frame_start_time.ToEpochDelta().ToMicroseconds(), + "frame_target_time", + frame_target_time.ToEpochDelta().ToMicroseconds()); std::weak_ptr weak_this = std::static_pointer_cast(shared_from_this()); diff --git a/shell/platform/android/vsync_waiter_android.cc b/shell/platform/android/vsync_waiter_android.cc index 2e9d4f499e262..defde4340e443 100644 --- a/shell/platform/android/vsync_waiter_android.cc +++ b/shell/platform/android/vsync_waiter_android.cc @@ -61,13 +61,10 @@ void VsyncWaiterAndroid::OnVsyncFromNDK(int64_t frame_nanos, void* data) { auto target_time = frame_time + fml::TimeDelta::FromNanoseconds( 1000000000.0 / g_refresh_rate_); - const std::string frame_start_time_str = - std::to_string(frame_time.ToEpochDelta().ToMicroseconds()); - const std::string frame_target_time_str = - std::to_string(target_time.ToEpochDelta().ToMicroseconds()); - TRACE_EVENT2("flutter", "PlatformVsync", "frame_start_time", - frame_start_time_str.c_str(), "frame_target_time", - frame_target_time_str.c_str()); + TRACE_EVENT2_INT("flutter", "PlatformVsync", "frame_start_time", + frame_time.ToEpochDelta().ToMicroseconds(), + "frame_target_time", + target_time.ToEpochDelta().ToMicroseconds()); auto* weak_this = reinterpret_cast*>(data); ConsumePendingCallback(weak_this, frame_time, target_time); @@ -84,13 +81,10 @@ void VsyncWaiterAndroid::OnVsyncFromJava(JNIEnv* env, auto target_time = frame_time + fml::TimeDelta::FromNanoseconds(refreshPeriodNanos); - const std::string frame_start_time_str = - std::to_string(frame_time.ToEpochDelta().ToMicroseconds()); - const std::string frame_target_time_str = - std::to_string(target_time.ToEpochDelta().ToMicroseconds()); - TRACE_EVENT2("flutter", "PlatformVsync", "frame_start_time", - frame_start_time_str.c_str(), "frame_target_time", - frame_target_time_str.c_str()); + TRACE_EVENT2_INT("flutter", "PlatformVsync", "frame_start_time", + frame_time.ToEpochDelta().ToMicroseconds(), + "frame_target_time", + target_time.ToEpochDelta().ToMicroseconds()); auto* weak_this = reinterpret_cast*>(java_baton); ConsumePendingCallback(weak_this, frame_time, target_time); diff --git a/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.mm b/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.mm index d1c6784393feb..207205f7288d8 100644 --- a/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.mm +++ b/shell/platform/darwin/ios/framework/Source/vsync_waiter_ios.mm @@ -108,12 +108,9 @@ - (void)onDisplayLink:(CADisplayLink*)link { CFTimeInterval duration = link.targetTimestamp - link.timestamp; fml::TimePoint frame_target_time = frame_start_time + fml::TimeDelta::FromSecondsF(duration); - const std::string frame_start_time_str = - std::to_string(frame_start_time.ToEpochDelta().ToMicroseconds()); - const std::string frame_target_time_str = - std::to_string(frame_target_time.ToEpochDelta().ToMicroseconds()); - TRACE_EVENT2("flutter", "PlatformVsync", "frame_start_time", frame_start_time_str.c_str(), - "frame_target_time", frame_target_time_str.c_str()); + TRACE_EVENT2_INT("flutter", "PlatformVsync", "frame_start_time", + frame_start_time.ToEpochDelta().ToMicroseconds(), "frame_target_time", + frame_target_time.ToEpochDelta().ToMicroseconds()); std::unique_ptr recorder = std::make_unique(); From e66ce59c64098637a96bf88ca9c78fe4fd7d0c2e Mon Sep 17 00:00:00 2001 From: fzyzcjy Date: Wed, 7 Dec 2022 08:56:24 +0800 Subject: [PATCH 10/11] fix --- fml/trace_event.h | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/fml/trace_event.h b/fml/trace_event.h index 3851dd0a3fd53..a68db19c79c89 100644 --- a/fml/trace_event.h +++ b/fml/trace_event.h @@ -101,17 +101,6 @@ arg2_name, arg2_val); \ __FML__AUTO_TRACE_END(name) -#define TRACE_EVENT2_INT(category_group, name, arg1_name, arg1_val, arg2_name, \ - arg2_val) \ - { \ - const std::string arg1_val_str = std::to_string(arg1_val); \ - const std::string arg2_val_str = std::to_string(arg2_val); \ - ::fml::tracing::TraceEvent2(category_group, name, arg1_name, \ - arg1_val_str.c_str(), arg2_name, \ - arg2_val_str.c_str()); \ - } \ - __FML__AUTO_TRACE_END(name) - #define TRACE_EVENT_ASYNC_BEGIN0(category_group, name, id) \ ::fml::tracing::TraceEventAsyncBegin0(category_group, name, id); @@ -150,6 +139,17 @@ #endif // TRACE_EVENT_HIDE_MACROS #endif // !defined(OS_FUCHSIA) +#define TRACE_EVENT2_INT(category_group, name, arg1_name, arg1_val, arg2_name, \ + arg2_val) \ + const std::string __FML__TOKEN_CAT__2(__arg1_val_str, __LINE__) = \ + std::to_string(arg1_val); \ + const std::string __FML__TOKEN_CAT__2(__arg2_val_str, __LINE__) = \ + std::to_string(arg2_val); \ + TRACE_EVENT2(category_group, name, arg1_name, \ + __FML__TOKEN_CAT__2(__arg1_val_str, __LINE__).c_str(), \ + arg2_name, \ + __FML__TOKEN_CAT__2(__arg2_val_str, __LINE__).c_str()); + namespace fml { namespace tracing { From e422b61b0ec2c6c5b61e0764587fa29b3f5b86da Mon Sep 17 00:00:00 2001 From: fzyzcjy Date: Wed, 7 Dec 2022 09:24:13 +0800 Subject: [PATCH 11/11] fix --- fml/trace_event.h | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/fml/trace_event.h b/fml/trace_event.h index a68db19c79c89..378b037101b57 100644 --- a/fml/trace_event.h +++ b/fml/trace_event.h @@ -141,14 +141,10 @@ #define TRACE_EVENT2_INT(category_group, name, arg1_name, arg1_val, arg2_name, \ arg2_val) \ - const std::string __FML__TOKEN_CAT__2(__arg1_val_str, __LINE__) = \ - std::to_string(arg1_val); \ - const std::string __FML__TOKEN_CAT__2(__arg2_val_str, __LINE__) = \ - std::to_string(arg2_val); \ - TRACE_EVENT2(category_group, name, arg1_name, \ - __FML__TOKEN_CAT__2(__arg1_val_str, __LINE__).c_str(), \ - arg2_name, \ - __FML__TOKEN_CAT__2(__arg2_val_str, __LINE__).c_str()); + const auto __arg1_val_str = std::to_string(arg1_val); \ + const auto __arg2_val_str = std::to_string(arg2_val); \ + TRACE_EVENT2(category_group, name, arg1_name, __arg1_val_str.c_str(), \ + arg2_name, __arg2_val_str.c_str()); namespace fml { namespace tracing {