1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef UI_GFX_ANDROID_ACHOREOGRAPHER_COMPAT_H_
#define UI_GFX_ANDROID_ACHOREOGRAPHER_COMPAT_H_
#include <sys/types.h>
#include "base/component_export.h"
extern "C" {
typedef struct AChoreographer AChoreographer;
typedef void (*AChoreographer_frameCallback64)(int64_t, void*);
typedef void (*AChoreographer_refreshRateCallback)(int64_t, void*);
using pAChoreographer_getInstance = AChoreographer* (*)();
using pAChoreographer_postFrameCallback64 =
void (*)(AChoreographer*, AChoreographer_frameCallback64, void*);
using pAChoreographer_registerRefreshRateCallback =
void (*)(AChoreographer*, AChoreographer_refreshRateCallback, void*);
using pAChoreographer_unregisterRefreshRateCallback =
void (*)(AChoreographer*, AChoreographer_refreshRateCallback, void*);
typedef struct AChoreographerFrameCallbackData AChoreographerFrameCallbackData;
typedef void (*AChoreographer_vsyncCallback)(
const AChoreographerFrameCallbackData*,
void*);
using pAChoreographer_postVsyncCallback =
void (*)(AChoreographer* choreographer,
AChoreographer_vsyncCallback callback,
void* data);
using pAChoreographerFrameCallbackData_getFrameTimeNanos =
int64_t (*)(const AChoreographerFrameCallbackData*);
using pAChoreographerFrameCallbackData_getFrameTimelinesLength =
size_t (*)(const AChoreographerFrameCallbackData*);
using pAChoreographerFrameCallbackData_getPreferredFrameTimelineIndex =
size_t (*)(const AChoreographerFrameCallbackData*);
using pAChoreographerFrameCallbackData_getFrameTimelineVsyncId =
int64_t (*)(const AChoreographerFrameCallbackData*, size_t);
using pAChoreographerFrameCallbackData_getFrameTimelineExpectedPresentationTimeNanos =
int64_t (*)(const AChoreographerFrameCallbackData*, size_t);
using pAChoreographerFrameCallbackData_getFrameTimelineDeadlineNanos =
int64_t (*)(const AChoreographerFrameCallbackData*, size_t);
} // extern "C"
namespace gfx {
struct COMPONENT_EXPORT(GFX) AChoreographerCompat {
static COMPONENT_EXPORT(GFX) const AChoreographerCompat& Get();
bool supported = true;
pAChoreographer_getInstance AChoreographer_getInstanceFn = nullptr;
pAChoreographer_postFrameCallback64 AChoreographer_postFrameCallback64Fn =
nullptr;
pAChoreographer_registerRefreshRateCallback
AChoreographer_registerRefreshRateCallbackFn = nullptr;
pAChoreographer_unregisterRefreshRateCallback
AChoreographer_unregisterRefreshRateCallbackFn = nullptr;
private:
AChoreographerCompat();
};
struct COMPONENT_EXPORT(GFX) AChoreographerCompat33 {
static COMPONENT_EXPORT(GFX) const AChoreographerCompat33& Get();
bool supported = true;
pAChoreographer_postVsyncCallback AChoreographer_postVsyncCallbackFn =
nullptr;
pAChoreographerFrameCallbackData_getFrameTimeNanos
AChoreographerFrameCallbackData_getFrameTimeNanosFn = nullptr;
pAChoreographerFrameCallbackData_getFrameTimelinesLength
AChoreographerFrameCallbackData_getFrameTimelinesLengthFn = nullptr;
pAChoreographerFrameCallbackData_getPreferredFrameTimelineIndex
AChoreographerFrameCallbackData_getPreferredFrameTimelineIndexFn =
nullptr;
pAChoreographerFrameCallbackData_getFrameTimelineVsyncId
AChoreographerFrameCallbackData_getFrameTimelineVsyncIdFn = nullptr;
pAChoreographerFrameCallbackData_getFrameTimelineExpectedPresentationTimeNanos
AChoreographerFrameCallbackData_getFrameTimelineExpectedPresentationTimeNanosFn =
nullptr;
pAChoreographerFrameCallbackData_getFrameTimelineDeadlineNanos
AChoreographerFrameCallbackData_getFrameTimelineDeadlineNanosFn = nullptr;
private:
AChoreographerCompat33();
};
} // namespace gfx
#endif // UI_GFX_ANDROID_ACHOREOGRAPHER_COMPAT_H_
|