File: achoreographer_compat.h

package info (click to toggle)
chromium 138.0.7204.183-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 6,071,908 kB
  • sloc: cpp: 34,937,088; ansic: 7,176,967; javascript: 4,110,704; python: 1,419,953; asm: 946,768; xml: 739,971; pascal: 187,324; sh: 89,623; perl: 88,663; objc: 79,944; sql: 50,304; cs: 41,786; fortran: 24,137; makefile: 21,806; php: 13,980; tcl: 13,166; yacc: 8,925; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (93 lines) | stat: -rw-r--r-- 3,886 bytes parent folder | download | duplicates (5)
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_