summaryrefslogtreecommitdiff
path: root/quickstep
diff options
context:
space:
mode:
author Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> 2025-03-24 11:10:42 -0700
committer Android (Google) Code Review <android-gerrit@google.com> 2025-03-24 11:10:42 -0700
commit69998a8c779a20f0d00c0338be3eb7cad943021b (patch)
treeaf9ff4e1dc193b016a05de29107114f7d27db3ac /quickstep
parente0a018785efb805a35e1bd8cedea622b57ae2f63 (diff)
parent836a832bfe4de06ab5ebec4fe3aaa8f44392bbd4 (diff)
Merge "Using Choreographer for getting refreshrate instead of display manager" into main
Diffstat (limited to 'quickstep')
-rw-r--r--quickstep/src/com/android/launcher3/dagger/Modules.kt6
-rw-r--r--quickstep/src/com/android/quickstep/util/ChoreographerFrameRateTracker.kt31
2 files changed, 37 insertions, 0 deletions
diff --git a/quickstep/src/com/android/launcher3/dagger/Modules.kt b/quickstep/src/com/android/launcher3/dagger/Modules.kt
index 7671a82869..9723b42c62 100644
--- a/quickstep/src/com/android/launcher3/dagger/Modules.kt
+++ b/quickstep/src/com/android/launcher3/dagger/Modules.kt
@@ -21,8 +21,10 @@ import com.android.launcher3.uioverrides.SystemApiWrapper
import com.android.launcher3.uioverrides.plugins.PluginManagerWrapperImpl
import com.android.launcher3.util.ApiWrapper
import com.android.launcher3.util.PluginManagerWrapper
+import com.android.launcher3.util.window.RefreshRateTracker
import com.android.launcher3.util.window.WindowManagerProxy
import com.android.launcher3.widget.LauncherWidgetHolder.WidgetHolderFactory
+import com.android.quickstep.util.ChoreographerFrameRateTracker
import com.android.quickstep.util.GestureExclusionManager
import com.android.quickstep.util.SystemWindowManagerProxy
import dagger.Binds
@@ -60,4 +62,8 @@ object StaticObjectModule {
@Provides
@JvmStatic
fun provideGestureExclusionManager(): GestureExclusionManager = GestureExclusionManager.INSTANCE
+
+ @Provides
+ @JvmStatic
+ fun provideRefreshRateTracker(): RefreshRateTracker = ChoreographerFrameRateTracker
}
diff --git a/quickstep/src/com/android/quickstep/util/ChoreographerFrameRateTracker.kt b/quickstep/src/com/android/quickstep/util/ChoreographerFrameRateTracker.kt
new file mode 100644
index 0000000000..1b61a6af6b
--- /dev/null
+++ b/quickstep/src/com/android/quickstep/util/ChoreographerFrameRateTracker.kt
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2025 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.quickstep.util
+
+import android.util.TimeUtils
+import android.view.Choreographer
+import com.android.launcher3.util.window.RefreshRateTracker
+
+/** [RefreshRateTracker] using main thread [Choreographer] */
+object ChoreographerFrameRateTracker : RefreshRateTracker {
+
+ override val singleFrameMs: Int
+ get() =
+ Choreographer.getMainThreadInstance()?.let {
+ (it.frameIntervalNanos / TimeUtils.NANOS_PER_MS).toInt().coerceAtLeast(1)
+ } ?: 1
+}