Choreographer

#include <choreographer.h>

Summary

Typedefs

AChoreographer typedef
struct AChoreographer
AChoreographer_frameCallback)(long frameTimeNanos, void *data) typedef
void(*
Prototype of the function that is called when a new frame is being rendered.
AChoreographer_frameCallback64)(int64_t frameTimeNanos, void *data) typedef
void(*
Prototype of the function that is called when a new frame is being rendered.
AChoreographer_refreshRateCallback)(int64_t vsyncPeriodNanos, void *data) typedef
void(*
Prototype of the function that is called when the display refresh rate changes.

Functions

AChoreographer_getInstance()
AChoreographer *
Get the AChoreographer instance for the current thread.
AChoreographer_postFrameCallback(AChoreographer *choreographer, AChoreographer_frameCallback callback, void *data)
void
Deprecated: Use AChoreographer_postFrameCallback64 instead.
AChoreographer_postFrameCallback64(AChoreographer *choreographer, AChoreographer_frameCallback64 callback, void *data)
void
Power a callback to be run on the next frame.
AChoreographer_postFrameCallbackDelayed(AChoreographer *choreographer, AChoreographer_frameCallback callback, void *data, long delayMillis)
void
Deprecated: Use AChoreographer_postFrameCallbackDelayed64 instead.
AChoreographer_postFrameCallbackDelayed64(AChoreographer *choreographer, AChoreographer_frameCallback64 callback, void *data, uint32_t delayMillis)
void
Post a callback to be run on the frame following the specified delay.
AChoreographer_registerRefreshRateCallback(AChoreographer *choreographer, AChoreographer_refreshRateCallback, void *data)
void
Registers a callback to be run when the display refresh rate changes.
AChoreographer_unregisterRefreshRateCallback(AChoreographer *choreographer, AChoreographer_refreshRateCallback, void *data)
void
Unregisters a callback to be run when the display refresh rate changes, along with the data pointer previously provided when registering the callback.

Typedefs

AChoreographer

struct AChoreographer AChoreographer

AChoreographer_frameCallback

void(* AChoreographer_frameCallback)(long frameTimeNanos, void *data)

Prototype of the function that is called when a new frame is being rendered.

It's passed the time that the frame is being rendered as nanoseconds in the CLOCK_MONOTONIC time base, as well as the data pointer provided by the application that registered a callback. All callbacks that run as part of rendering a frame will observe the same frame time, so it should be used whenever events need to be synchronized (e.g. animations).

AChoreographer_frameCallback64

void(* AChoreographer_frameCallback64)(int64_t frameTimeNanos, void *data)

Prototype of the function that is called when a new frame is being rendered.

It's passed the time that the frame is being rendered as nanoseconds in the CLOCK_MONOTONIC time base, as well as the data pointer provided by the application that registered a callback. All callbacks that run as part of rendering a frame will observe the same frame time, so it should be used whenever events need to be synchronized (e.g. animations).

AChoreographer_refreshRateCallback

void(* AChoreographer_refreshRateCallback)(int64_t vsyncPeriodNanos, void *data)

Prototype of the function that is called when the display refresh rate changes.

It's passed the new vsync period in nanoseconds, as well as the data pointer provided by the application that registered a callback.

Functions

AChoreographer_getInstance

AChoreographer * AChoreographer_getInstance()

Get the AChoreographer instance for the current thread.

This must be called on an ALooper thread.

Available since API level 24.

AChoreographer_postFrameCallback

void AChoreographer_postFrameCallback(
  AChoreographer *choreographer,
  AChoreographer_frameCallback callback,
  void *data
)

Deprecated: Use AChoreographer_postFrameCallback64 instead.

AChoreographer_postFrameCallback64

void AChoreographer_postFrameCallback64(
  AChoreographer *choreographer,
  AChoreographer_frameCallback64 callback,
  void *data
)

Power a callback to be run on the next frame.

The data pointer provided will be passed to the callback function when it's called.

Available since API level 29.

AChoreographer_postFrameCallbackDelayed

void AChoreographer_postFrameCallbackDelayed(
  AChoreographer *choreographer,
  AChoreographer_frameCallback callback,
  void *data,
  long delayMillis
)

Deprecated: Use AChoreographer_postFrameCallbackDelayed64 instead.

AChoreographer_postFrameCallbackDelayed64

void AChoreographer_postFrameCallbackDelayed64(
  AChoreographer *choreographer,
  AChoreographer_frameCallback64 callback,
  void *data,
  uint32_t delayMillis
)

Post a callback to be run on the frame following the specified delay.

The data pointer provided will be passed to the callback function when it's called.

Available since API level 29.

AChoreographer_registerRefreshRateCallback

void AChoreographer_registerRefreshRateCallback(
  AChoreographer *choreographer,
  AChoreographer_refreshRateCallback,
  void *data
)

Registers a callback to be run when the display refresh rate changes.

The data pointer provided will be passed to the callback function when it's called. The same callback may be registered multiple times, provided that a different data pointer is provided each time.

If an application registers a callback for this choreographer instance when no new callbacks were previously registered, that callback is guaranteed to be dispatched. However, if the callback and associated data pointer are unregistered prior to running the callback, then the callback may be silently dropped.

This api is thread-safe. Any thread is allowed to register a new refresh rate callback for the choreographer instance.

AChoreographer_unregisterRefreshRateCallback

void AChoreographer_unregisterRefreshRateCallback(
  AChoreographer *choreographer,
  AChoreographer_refreshRateCallback,
  void *data
)

Unregisters a callback to be run when the display refresh rate changes, along with the data pointer previously provided when registering the callback.

The callback is only unregistered when the data pointer matches one that was previously registered.

This api is thread-safe. Any thread is allowed to unregister an existing refresh rate callback for the choreographer instance. When a refresh rate callback and associated data pointer are unregistered, then there is a guarantee that when the unregistration completes that that callback will not be run with the data pointer passed.