14a526c124554e75dc4bc11a682645a73bd47d501Winson Chung/* 24a526c124554e75dc4bc11a682645a73bd47d501Winson Chung * Copyright (C) 2017 The Android Open Source Project 34a526c124554e75dc4bc11a682645a73bd47d501Winson Chung * 44a526c124554e75dc4bc11a682645a73bd47d501Winson Chung * Licensed under the Apache License, Version 2.0 (the "License"); 54a526c124554e75dc4bc11a682645a73bd47d501Winson Chung * you may not use this file except in compliance with the License. 64a526c124554e75dc4bc11a682645a73bd47d501Winson Chung * You may obtain a copy of the License at 74a526c124554e75dc4bc11a682645a73bd47d501Winson Chung * 84a526c124554e75dc4bc11a682645a73bd47d501Winson Chung * http://www.apache.org/licenses/LICENSE-2.0 94a526c124554e75dc4bc11a682645a73bd47d501Winson Chung * 104a526c124554e75dc4bc11a682645a73bd47d501Winson Chung * Unless required by applicable law or agreed to in writing, software 114a526c124554e75dc4bc11a682645a73bd47d501Winson Chung * distributed under the License is distributed on an "AS IS" BASIS, 124a526c124554e75dc4bc11a682645a73bd47d501Winson Chung * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134a526c124554e75dc4bc11a682645a73bd47d501Winson Chung * See the License for the specific language governing permissions and 144a526c124554e75dc4bc11a682645a73bd47d501Winson Chung * limitations under the License. 154a526c124554e75dc4bc11a682645a73bd47d501Winson Chung */ 164a526c124554e75dc4bc11a682645a73bd47d501Winson Chung 174a526c124554e75dc4bc11a682645a73bd47d501Winson Chungpackage com.android.internal.graphics; 184a526c124554e75dc4bc11a682645a73bd47d501Winson Chung 194a526c124554e75dc4bc11a682645a73bd47d501Winson Chungimport android.animation.AnimationHandler.AnimationFrameCallbackProvider; 204a526c124554e75dc4bc11a682645a73bd47d501Winson Chungimport android.view.Choreographer; 214a526c124554e75dc4bc11a682645a73bd47d501Winson Chung 224a526c124554e75dc4bc11a682645a73bd47d501Winson Chung/** 234a526c124554e75dc4bc11a682645a73bd47d501Winson Chung * Provider of timing pulse that uses SurfaceFlinger Vsync Choreographer for frame callbacks. 244a526c124554e75dc4bc11a682645a73bd47d501Winson Chung * 254a526c124554e75dc4bc11a682645a73bd47d501Winson Chung * @hide 264a526c124554e75dc4bc11a682645a73bd47d501Winson Chung */ 274a526c124554e75dc4bc11a682645a73bd47d501Winson Chungpublic final class SfVsyncFrameCallbackProvider implements AnimationFrameCallbackProvider { 284a526c124554e75dc4bc11a682645a73bd47d501Winson Chung 294a526c124554e75dc4bc11a682645a73bd47d501Winson Chung private final Choreographer mChoreographer = Choreographer.getSfInstance(); 304a526c124554e75dc4bc11a682645a73bd47d501Winson Chung 314a526c124554e75dc4bc11a682645a73bd47d501Winson Chung @Override 324a526c124554e75dc4bc11a682645a73bd47d501Winson Chung public void postFrameCallback(Choreographer.FrameCallback callback) { 334a526c124554e75dc4bc11a682645a73bd47d501Winson Chung mChoreographer.postFrameCallback(callback); 344a526c124554e75dc4bc11a682645a73bd47d501Winson Chung } 354a526c124554e75dc4bc11a682645a73bd47d501Winson Chung 364a526c124554e75dc4bc11a682645a73bd47d501Winson Chung @Override 374a526c124554e75dc4bc11a682645a73bd47d501Winson Chung public void postCommitCallback(Runnable runnable) { 384a526c124554e75dc4bc11a682645a73bd47d501Winson Chung mChoreographer.postCallback(Choreographer.CALLBACK_COMMIT, runnable, null); 394a526c124554e75dc4bc11a682645a73bd47d501Winson Chung } 404a526c124554e75dc4bc11a682645a73bd47d501Winson Chung 414a526c124554e75dc4bc11a682645a73bd47d501Winson Chung @Override 424a526c124554e75dc4bc11a682645a73bd47d501Winson Chung public long getFrameTime() { 434a526c124554e75dc4bc11a682645a73bd47d501Winson Chung return mChoreographer.getFrameTime(); 444a526c124554e75dc4bc11a682645a73bd47d501Winson Chung } 454a526c124554e75dc4bc11a682645a73bd47d501Winson Chung 464a526c124554e75dc4bc11a682645a73bd47d501Winson Chung @Override 474a526c124554e75dc4bc11a682645a73bd47d501Winson Chung public long getFrameDelay() { 484a526c124554e75dc4bc11a682645a73bd47d501Winson Chung return Choreographer.getFrameDelay(); 494a526c124554e75dc4bc11a682645a73bd47d501Winson Chung } 504a526c124554e75dc4bc11a682645a73bd47d501Winson Chung 514a526c124554e75dc4bc11a682645a73bd47d501Winson Chung @Override 524a526c124554e75dc4bc11a682645a73bd47d501Winson Chung public void setFrameDelay(long delay) { 534a526c124554e75dc4bc11a682645a73bd47d501Winson Chung Choreographer.setFrameDelay(delay); 544a526c124554e75dc4bc11a682645a73bd47d501Winson Chung } 554a526c124554e75dc4bc11a682645a73bd47d501Winson Chung}