Skip to content

Conversation

@777genius
Copy link
Contributor

Description

This PR fixes a build error when compiling Flutter's Impeller engine against Android API 35. The deprecated AChoreographer_postFrameCallback API causes a fatal compilation error, but is still required for backward compatibility with Android devices running API levels 24-28.

The fix adds compiler pragma directives to suppress the deprecation warning without changing runtime behavior. The code continues to:

  • Prefer AChoreographer_postFrameCallback64 on API 29+ devices (newer, recommended API)
  • Fall back to AChoreographer_postFrameCallback on API 24-28 devices (legacy support)

This approach follows the recommendation from @chinmaygarde in the issue comments.

Changed file:

  • engine/src/flutter/impeller/toolkit/android/proc_table.h

Changes made:

#define FOR_EACH_ANDROID_PROC(INVOKE)                            \
  INVOKE(AChoreographer_getInstance, 24)                         \
  _Pragma("clang diagnostic push")                               \
  _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"") \
  INVOKE(AChoreographer_postFrameCallback, 24)                   \
  _Pragma("clang diagnostic pop")                                \
  INVOKE(AChoreographer_postFrameCallback64, 29)                 \
  ...

Issues Fixed

Fixes #173656

Pre-launch Checklist

Test exemption justification: This change only suppresses a compile-time warning and does not modify runtime behavior. The existing choreographer tests cover the runtime functionality.

@flutter-dashboard
Copy link

It looks like this pull request may not have tests. Please make sure to add tests or get an explicit test exemption before merging.

If you are not sure if you need tests, consider this rule of thumb: the purpose of a test is to make sure someone doesn't accidentally revert the fix. Ask yourself, is there anything in your PR that you feel it is important we not accidentally revert back to how it was before your fix?

Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing. If you believe this PR qualifies for a test exemption, contact "@test-exemption-reviewer" in the #hackers channel in Discord (don't just cc them here, they won't see it!). The test exemption team is a small volunteer group, so all reviewers should feel empowered to ask for tests, without delegating that responsibility entirely to the test exemption group.

@github-actions github-actions bot added engine flutter/engine related. See also e: labels. e: impeller Impeller rendering backend issues and features requests labels Nov 15, 2025
Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request correctly suppresses a deprecation warning for AChoreographer_postFrameCallback which is necessary for compatibility with Android API 35. The use of _Pragma is appropriate for use within a macro. I have one suggestion to improve the portability of this change by adding compiler guards around the Clang-specific pragmas, which would make the code more robust if it were ever compiled with a different toolchain.

@chinmaygarde
Copy link
Contributor

Other than the note flagged about this being clang specific (with a suggested workaround), this LGTM.

@777genius
Copy link
Contributor Author

@chinmaygarde Thanks for the feedback! I've updated the code to use GCC diagnostic pragma instead of clang diagnostic for better compiler compatibility. Please take a look.

Copy link
Contributor

@chinmaygarde chinmaygarde left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cc @jason-simmons for another review so we can get it through the presubmit.

@jason-simmons jason-simmons force-pushed the fix/android-api35-choreographer-deprecation branch 2 times, most recently from 2a87e0b to 559db4a Compare November 19, 2025 21:44
@chinmaygarde
Copy link
Contributor

Oof, the clang-format seems really weirded out by the macros. Perhaps just // clang-format off for that block? Let me know if you'd rather I take over landing the patch.

@777genius
Copy link
Contributor Author

@chinmaygarde Done! Added // clang-format off/on around the macro block.

@chinmaygarde chinmaygarde added the autosubmit Merge PR when tree becomes green via auto submit App label Dec 2, 2025
@auto-submit auto-submit bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Dec 2, 2025
@auto-submit
Copy link
Contributor

auto-submit bot commented Dec 2, 2025

autosubmit label was removed for flutter/flutter/178580, because The base commit of the PR is older than 7 days and can not be merged. Please merge the latest changes from the main into this branch and resubmit the PR.

AChoreographer_postFrameCallback is deprecated in Android API 35, but we still
need to support it for devices running API levels 24-28. The code already uses
AChoreographer_postFrameCallback64 when available on API 29+.

This change suppresses the deprecation warning to allow building against API 35
while maintaining backward compatibility.

Fixes flutter#173656
@chinmaygarde chinmaygarde force-pushed the fix/android-api35-choreographer-deprecation branch from 5af7a99 to 7975871 Compare December 8, 2025 19:07
@jason-simmons jason-simmons added this pull request to the merge queue Dec 15, 2025
Merged via the queue into flutter:master with commit c123394 Dec 15, 2025
179 checks passed
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Dec 16, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Dec 16, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Dec 17, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Dec 17, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Dec 17, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Dec 18, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Dec 18, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Dec 18, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Dec 18, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Dec 18, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Dec 18, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Dec 19, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Dec 19, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Dec 19, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Dec 19, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Dec 19, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Dec 20, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Dec 20, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Dec 21, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Dec 21, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Dec 21, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Dec 22, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Dec 22, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Dec 22, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Dec 23, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Dec 23, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Dec 23, 2025
auto-submit bot pushed a commit to flutter/packages that referenced this pull request Dec 23, 2025
Roll Flutter from 6e1aa82 to d81baab (47 revisions)

flutter/flutter@6e1aa82...d81baab

2025-12-16 68449066+zijiehe-google-com@users.noreply.github.com Revert "chore: linux fuchsia tests are flaking" (flutter/flutter#179897)
2025-12-15 planetmarshall@users.noreply.github.com add default-linux-sysroot to gn frontend args (flutter/flutter#179303)
2025-12-15 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#179751)
2025-12-15 engine-flutter-autoroll@skia.org Roll Skia from 783ce2077e46 to 6903a4e65c3f (2 revisions) (flutter/flutter#179903)
2025-12-15 adilhanney@disroot.org Add `Adwaita Sans` as a font fallback on Linux (flutter/flutter#179144)
2025-12-15 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Unmodified android sdk bundle (#179647)" (flutter/flutter#179904)
2025-12-15 robert.ancell@canonical.com Update window settings as they change rather than the more outdated "Apply" pattern. (flutter/flutter#179861)
2025-12-15 49699333+dependabot[bot]@users.noreply.github.com Bump dessant/lock-threads from 5.0.1 to 6.0.0 in the all-github-actions group (flutter/flutter#179901)
2025-12-15 engine-flutter-autoroll@skia.org Roll Skia from 9decbd4c216b to 783ce2077e46 (2 revisions) (flutter/flutter#179896)
2025-12-15 34871572+gmackall@users.noreply.github.com Unmodified android sdk bundle (flutter/flutter#179647)
2025-12-15 mdebbar@google.com [web] Fix `resizeToAvoidBottomInset` on Android web (flutter/flutter#179581)
2025-12-15 iliyazelenkog@gmail.com Suppress deprecation warning for AChoreographer_postFrameCallback (flutter/flutter#178580)
2025-12-15 planetmarshall@users.noreply.github.com remove unnecessary virtual destructor from VertexDescriptor (flutter/flutter#178682)
2025-12-15 engine-flutter-autoroll@skia.org Roll Dart SDK from b245f6022727 to 20d114f951db (1 revision) (flutter/flutter#179893)
2025-12-15 jason-simmons@users.noreply.github.com [Impeller] Delete GLES framebuffer objects only on the thread where they were created (flutter/flutter#179768)
2025-12-15 jason-simmons@users.noreply.github.com [Impeller] Convert paths in ImpellerC command line flags to std::filesystem::path objects (flutter/flutter#179717)
2025-12-15 engine-flutter-autoroll@skia.org Roll Skia from 5e1ff611b36b to 9decbd4c216b (2 revisions) (flutter/flutter#179890)
2025-12-15 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from DtfDWAx6t_CsD2e1W... to 433KtmJvbMyaDMJvD... (flutter/flutter#179889)
2025-12-15 116356835+AbdeMohlbi@users.noreply.github.com Remove unnecessary unboxing in `FlutterLoader.java‎` (flutter/flutter#179869)
2025-12-15 engine-flutter-autoroll@skia.org Roll Skia from f04f8ca3b284 to 5e1ff611b36b (1 revision) (flutter/flutter#179882)
2025-12-15 engine-flutter-autoroll@skia.org Roll Packages from 0ac7a03 to 2cd921c (1 revision) (flutter/flutter#179885)
2025-12-15 bkonyi@google.com [ Widget Preview ] Pass DTD URI as a constant in a generated file (flutter/flutter#179821)
2025-12-15 116356835+AbdeMohlbi@users.noreply.github.com Bump minSdk to `24` in `engine` (flutter/flutter#175508)
2025-12-15 engine-flutter-autoroll@skia.org Roll Dart SDK from bca8bb37d95f to b245f6022727 (1 revision) (flutter/flutter#179879)
2025-12-15 engine-flutter-autoroll@skia.org Roll Skia from eb1347d18957 to f04f8ca3b284 (1 revision) (flutter/flutter#179876)
2025-12-15 engine-flutter-autoroll@skia.org Roll Skia from 41bcfb848b13 to eb1347d18957 (1 revision) (flutter/flutter#179871)
2025-12-15 engine-flutter-autoroll@skia.org Roll Skia from d194c3b7a9a9 to 41bcfb848b13 (6 revisions) (flutter/flutter#179866)
2025-12-14 robert.ancell@canonical.com Remove obsolete windowing channel (flutter/flutter#179718)
2025-12-14 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from SCLq31whvg8nJvuYE... to DtfDWAx6t_CsD2e1W... (flutter/flutter#179856)
2025-12-14 engine-flutter-autoroll@skia.org Roll Skia from 5d98ce0af031 to d194c3b7a9a9 (1 revision) (flutter/flutter#179854)
2025-12-13 engine-flutter-autoroll@skia.org Roll Skia from f9b242d9a365 to 5d98ce0af031 (1 revision) (flutter/flutter#179843)
2025-12-13 engine-flutter-autoroll@skia.org Roll Skia from abe90c72cf56 to f9b242d9a365 (1 revision) (flutter/flutter#179838)
2025-12-13 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from fppT9ZrwbFx7iYrIh... to SCLq31whvg8nJvuYE... (flutter/flutter#179836)
2025-12-13 engine-flutter-autoroll@skia.org Roll Dart SDK from 34654f2a3baa to bca8bb37d95f (1 revision) (flutter/flutter#179835)
2025-12-13 engine-flutter-autoroll@skia.org Roll Skia from 9e7c893bb593 to abe90c72cf56 (1 revision) (flutter/flutter#179830)
2025-12-13 engine-flutter-autoroll@skia.org Roll Dart SDK from f105c2168574 to 34654f2a3baa (1 revision) (flutter/flutter#179823)
2025-12-13 97480502+b-luk@users.noreply.github.com Add FilterQuality parameter to FragmentShader.setImageSampler (flutter/flutter#179760)
2025-12-13 evanwall@buffalo.edu Add profiling counts to pipeline uses (flutter/flutter#179374)
2025-12-13 engine-flutter-autoroll@skia.org Roll Skia from edf52cb27f29 to 9e7c893bb593 (3 revisions) (flutter/flutter#179819)
2025-12-12 jacksongardner@google.com Update Skwasm to engine style guidelines. (flutter/flutter#179756)
2025-12-12 engine-flutter-autoroll@skia.org Roll Dart SDK from 9a65db770758 to f105c2168574 (5 revisions) (flutter/flutter#179814)
2025-12-12 engine-flutter-autoroll@skia.org Roll Skia from f23b00a407a4 to edf52cb27f29 (5 revisions) (flutter/flutter#179807)
2025-12-12 97480502+b-luk@users.noreply.github.com Use depth buffer to implement geometry overdraw protection (flutter/flutter#179426)
2025-12-12 nshahan@google.com [flutter_tool] Force UTF-8 character set for dev (flutter/flutter#179419)
2025-12-12 engine-flutter-autoroll@skia.org Roll Skia from e66816c3645e to f23b00a407a4 (2 revisions) (flutter/flutter#179798)
2025-12-12 30870216+gaaclarke@users.noreply.github.com Implements decodeImageFromPixelsSync (flutter/flutter#179519)
...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

e: impeller Impeller rendering backend issues and features requests engine flutter/engine related. See also e: labels.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Impeller uses deprecated AChoreographer_postFrameCallback

3 participants