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}