Skip to content

Conversation

fzyzcjy
Copy link
Contributor

@fzyzcjy fzyzcjy commented Oct 1, 2022

The original code comment says:

If we're the root of the render tree (probably a RenderView), then we have to paint ourselves, since nobody else can paint us. We don't add ourselves to _nodesNeedingPaint in this case, because the root is always told to paint regardless.

However, IMHO it is wrong in two aspects.

Problem 1: RenderView does not come to this branch

Firstly, for a RenderView, it will not go into this branch, but instead go into the first branch (the if (isRepaintBoundary && _wasRepaintBoundary)). This is because RenderView.isRepaintBoundary is defined to be true, which can be seen in the code.

The experiment also confirms this. Click to expand below:

Add a few logs:

image

Code:

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter/scheduler.dart';
import 'package:flutter_test/flutter_test.dart';

void main() {
  testWidgets('hello', (tester) async {
    debugPrintBeginFrameBanner = debugPrintEndFrameBanner = true;

    final dummy = ValueNotifier(0);
    await tester.pumpWidget(ValueListenableBuilder(
      valueListenable: dummy,
      builder: (_, dummy, __) => _DummyInner(dummy: dummy),
    ));

    dummy.value++;
    await tester.pump();

    debugPrintBeginFrameBanner = debugPrintEndFrameBanner = false;
  });
}

class _DummyInner extends SingleChildRenderObjectWidget {
  final int dummy;

  const _DummyInner({
    super.key,
    required this.dummy,
    super.child,
  });

  @override
  _RenderDummy createRenderObject(BuildContext context) =>
      _RenderDummy(dummy: dummy);

  @override
  void updateRenderObject(BuildContext context, _RenderDummy renderObject) {
    renderObject.dummy = dummy;
  }
}

class _RenderDummy extends RenderProxyBox {
  _RenderDummy({
    required int dummy,
    RenderBox? child,
  })  : _dummy = dummy,
        super(child);

  // not mark repaint yet
  int get dummy => _dummy;
  int _dummy;

  set dummy(int value) {
    if (_dummy == value) return;
    _dummy = value;
    print('hi ${describeIdentity(this)} set dummy thus markNeedsPaint START');
    markNeedsPaint();
    print('hi ${describeIdentity(this)} set dummy thus markNeedsPaint END');
  }

  @override
  void paint(PaintingContext context, Offset offset) {
    print('hi ${describeIdentity(this)}.paint SUPPOSE THIS IS THE REAL PAINT');
    super.paint(context, offset);
  }
}

output

/Volumes/MyExternal/ExternalRefCode/flutter/bin/flutter --no-color test --machine --start-paused --plain-name hello --local-engine-src-path=/Volumes/MyExternal/ExternalRefCode/engine/src --local-engine=host_debug_unopt test/hello.dart
Testing started at 09:21 ...

hi RenderParagraph#d9227.markNeedsPaint start _needsPaint=true
hi RenderPositionedBox#d9bb5.markNeedsPaint start _needsPaint=true
hi RenderView#fab3a.markNeedsPaint start _needsPaint=true
hi flushPaint PipelineOwner#89028 node=RenderView#fab3a NEEDS-PAINT _needsPaint=true owner=PipelineOwner#89028 node._layerHandle.layer!.attached=true
hi TransformLayer#64092.buildScene
hi PictureLayer#149d1._addToSceneWithRetainedRendering _needsAddToScene=true
▄▄▄▄▄▄▄▄ Frame 2                        0ms ▄▄▄▄▄▄▄▄
hi _RenderDummy#a17bc.markNeedsPaint start _needsPaint=true
hi RenderView#fab3a.markNeedsPaint start _needsPaint=false
hi RenderView#fab3a.markNeedsPaint case-repaintboundary owner=PipelineOwner#89028
hi flushPaint PipelineOwner#89028 node=RenderView#fab3a NEEDS-PAINT _needsPaint=true owner=PipelineOwner#89028 node._layerHandle.layer!.attached=true
hi _RenderDummy#a17bc.paint SUPPOSE THIS IS THE REAL PAINT
hi TransformLayer#64092.buildScene
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
▄▄▄▄▄▄▄▄ Frame 3                        0ms ▄▄▄▄▄▄▄▄
hi _RenderDummy#a17bc set dummy thus markNeedsPaint START
hi _RenderDummy#a17bc.markNeedsPaint start _needsPaint=false
hi _RenderDummy#a17bc.markNeedsPaint case-parent parent=RenderView#fab3a
hi RenderView#fab3a.markNeedsPaint start _needsPaint=false
hi RenderView#fab3a.markNeedsPaint case-repaintboundary owner=PipelineOwner#89028
hi _RenderDummy#a17bc set dummy thus markNeedsPaint END
hi flushPaint PipelineOwner#89028 node=RenderView#fab3a NEEDS-PAINT _needsPaint=true owner=PipelineOwner#89028 node._layerHandle.layer!.attached=true
hi _RenderDummy#a17bc.paint SUPPOSE THIS IS THE REAL PAINT
hi TransformLayer#64092.buildScene
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
hi RenderParagraph#c63b7.markNeedsPaint start _needsPaint=true
hi RenderPositionedBox#2fb99.markNeedsPaint start _needsPaint=true
hi RenderView#fab3a.markNeedsPaint start _needsPaint=false
hi RenderView#fab3a.markNeedsPaint case-repaintboundary owner=PipelineOwner#89028
hi flushPaint PipelineOwner#89028 node=RenderView#fab3a NEEDS-PAINT _needsPaint=true owner=PipelineOwner#89028 node._layerHandle.layer!.attached=true
hi TransformLayer#64092.buildScene
hi PictureLayer#18f7f._addToSceneWithRetainedRendering _needsAddToScene=true

By looking at the experiment above, we see that, the RenderView goes to the case-repaintboundary which is the first branch, instead of the third branch, so the comments seem incorrect.

Problem 2: Root is not always told to paint indeed

Theoretically, I do not find clues why "root is always told to paint" indeed. Experimentically, this is also confirmed as below.

We change the branching condition as follows, so RenderView is forced to go to the 3rd branch (the branch with comments), instead of the 1st branch.

-     if (isRepaintBoundary && _wasRepaintBoundary) {
+     if (isRepaintBoundary && _wasRepaintBoundary && /*HACK!!!*/(this is! RenderView)) {

Then we run the test code same as above (only with a few more logging), and get:

/Volumes/MyExternal/ExternalRefCode/flutter/bin/flutter --no-color test --machine --start-paused --plain-name hello --local-engine-src-path=/Volumes/MyExternal/ExternalRefCode/engine/src --local-engine=host_debug_unopt test/hello.dart
Testing started at 09:25 ...

hi RenderParagraph#c9872.markNeedsPaint start _needsPaint=true
hi RenderPositionedBox#f6896.markNeedsPaint start _needsPaint=true
hi RenderView#0fb85.markNeedsPaint start _needsPaint=true
hi flushPaint PipelineOwner#ce901 node=RenderView#0fb85 NEEDS-PAINT _needsPaint=true owner=PipelineOwner#ce901 node._layerHandle.layer!.attached=true
hi RenderView#0fb85.paint
hi TransformLayer#d7668.buildScene
hi PictureLayer#335b7._addToSceneWithRetainedRendering _needsAddToScene=true
▄▄▄▄▄▄▄▄ Frame 2                        0ms ▄▄▄▄▄▄▄▄
hi _RenderDummy#3427b.markNeedsPaint start _needsPaint=true
hi RenderView#0fb85.markNeedsPaint start _needsPaint=false
hi RenderView#0fb85.markNeedsPaint case-else owner=PipelineOwner#ce901
hi TransformLayer#d7668.buildScene
hi PictureLayer#335b7._addToSceneWithRetainedRendering _needsAddToScene=false
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
▄▄▄▄▄▄▄▄ Frame 3                        0ms ▄▄▄▄▄▄▄▄
hi _RenderDummy#3427b set dummy thus markNeedsPaint START
hi _RenderDummy#3427b.markNeedsPaint start _needsPaint=true
hi _RenderDummy#3427b set dummy thus markNeedsPaint END
hi TransformLayer#d7668.buildScene
hi PictureLayer#335b7._addToSceneWithRetainedRendering _needsAddToScene=false
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
hi RenderParagraph#66d6b.markNeedsPaint start _needsPaint=true
hi RenderPositionedBox#537a5.markNeedsPaint start _needsPaint=true
hi RenderView#0fb85.markNeedsPaint start _needsPaint=true
hi TransformLayer#d7668.buildScene
hi PictureLayer#335b7._addToSceneWithRetainedRendering _needsAddToScene=false

As we can see, RenderView.paint and RenderDummy.paint is only called once, even though we clearly call RenderDummy.markNeedsPaint. That is indeed a bug, and at least shows that the code comment is wrong - root is not always told to paint.


Replace this paragraph with a description of what this PR is changing or adding, and why. Consider including before/after screenshots.

List which issues are fixed by this PR. You must list at least one issue.
close #112736

If you had to change anything in the flutter/tests repo, include a link to the migration guide as per the breaking change policy.

Pre-launch Checklist

  • I read the Contributor Guide and followed the process outlined there for submitting PRs.
  • I read the Tree Hygiene wiki page, which explains my responsibilities.
  • I read and followed the Flutter Style Guide, including Features we expect every widget to implement.
  • I signed the CLA.
  • I listed at least one issue that this PR fixes in the description above.
  • I updated/added relevant documentation (doc comments with ///).
  • I added new tests to check the change I am making, or this PR is test-exempt.
  • All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

@flutter-dashboard flutter-dashboard bot added the framework flutter/packages/flutter repository. See also f: labels. label Oct 1, 2022
@fzyzcjy fzyzcjy marked this pull request as ready for review October 1, 2022 01:29
@goderbauer goderbauer self-requested a review October 7, 2022 21:27
// then we have to paint ourselves, since nobody else can paint
// us. We don't add ourselves to _nodesNeedingPaint in this
// case, because the root is always told to paint regardless.
// This case does not happen in normal trees.
Copy link
Member

Choose a reason for hiding this comment

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

Are there cases in which this can still happen? If not, we should just delete this branch then and assert that the case can't happen.

Copy link
Contributor Author

@fzyzcjy fzyzcjy Oct 10, 2022

Choose a reason for hiding this comment

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

Maybe a Flutter user who, for some weird reason, choose to have a RenderObject that is neither a repaint boundary nor having a parent RenderObject? I mainly do this for compatibility reasons, but if you like I can remove and assert (so the code is simpler and faster as well).

Copy link
Member

Choose a reason for hiding this comment

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

Ok, the tree doesn't have to be rooted at a RenderView and therefore the root may not be a relayoutboundary. Therefore, this code is still needed. Let's update the comment to something like this:

If we are the root of the render tree (and not a repaint boundary) then we have to paint ourselves, since nobody else can paint us. We don't add ourselves to _nodesNeedingPaint in this case, because the root is always told to paint regardless.

Typical trees rooted at a RenderView do not go through this code path because RenderViews are repaint boundaries.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

done

// then we have to paint ourselves, since nobody else can paint
// us. We don't add ourselves to _nodesNeedingPaint in this
// case, because the root is always told to paint regardless.
// This case does not happen in normal trees.
Copy link
Member

Choose a reason for hiding this comment

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

Ok, the tree doesn't have to be rooted at a RenderView and therefore the root may not be a relayoutboundary. Therefore, this code is still needed. Let's update the comment to something like this:

If we are the root of the render tree (and not a repaint boundary) then we have to paint ourselves, since nobody else can paint us. We don't add ourselves to _nodesNeedingPaint in this case, because the root is always told to paint regardless.

Typical trees rooted at a RenderView do not go through this code path because RenderViews are repaint boundaries.

@@ -2594,14 +2594,14 @@ abstract class RenderObject extends AbstractNode with DiagnosticableTreeMixin im
} else {
assert(() {
if (debugPrintMarkNeedsPaintStacks) {
debugPrintStack(label: 'markNeedsPaint() called for $this (root of render tree)');
Copy link
Member

Choose a reason for hiding this comment

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

leave this in? It's still correct that this marks the root of the render tree

Copy link
Contributor Author

Choose a reason for hiding this comment

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

done

Copy link
Contributor

@justinmc justinmc left a comment

Choose a reason for hiding this comment

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

LGTM 👍

Thanks again for the docs fix.

// We don't add ourselves to _nodesNeedingPaint in this case,
// because the root is always told to paint regardless.
//
// Typical trees rooted at a RenderView do not go through this
Copy link
Contributor

Choose a reason for hiding this comment

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

Nit: Should "Typical" be "Typically"?

If using "Typical": The trees are typical.

If using "Typically": The action of not going through the code path is typical.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I have no idea which is better. Yes, normal trees we see everyday (thus typical trees) should not go to this path. And yes, the action is also seen everyday (typically)

If you like I can change it

Copy link
Member

Choose a reason for hiding this comment

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

How about we just remove "typical" and start the sentence here with "Trees ..."?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done

@goderbauer
Copy link
Member

Sorry for the trouble, but you'll also have to rebase this to the latest master to make the "ci.yaml validation" check happy.

@fzyzcjy
Copy link
Contributor Author

fzyzcjy commented Nov 2, 2022

Done

Copy link
Member

@goderbauer goderbauer left a comment

Choose a reason for hiding this comment

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

LGTM

@goderbauer
Copy link
Member

@fzyzcjy Can you rebase this to trigger the Google testing check again? Looks like it got stuck...

@fzyzcjy
Copy link
Contributor Author

fzyzcjy commented Nov 15, 2022

@goderbauer done

@goderbauer goderbauer added the autosubmit Merge PR when tree becomes green via auto submit App label Nov 15, 2022
@auto-submit auto-submit bot merged commit 7d2b011 into flutter:master Nov 16, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 16, 2022
auto-submit bot pushed a commit to flutter/packages that referenced this pull request Nov 16, 2022
* 338841a Revert "Revert "Revert "Scribble mixin (#104128)" (#114647)" (#114698)" (flutter/flutter#115146)

* 229b39e [flutter_tools] Fix so that the value set by `--dart-define-from-file` can be passed to Gradle (flutter/flutter#114297)

* 3895786 Revert "Load assets in flutter_test without turning event loop. (#115123)" (flutter/flutter#115156)

* a6e3ec8 mark firebase test lab test flaky because of upstream infra issues (flutter/flutter#115178)

* 8d808b5 Roll Flutter Engine from 7326e5b3354b to 329900fc85d6 (7 revisions) (flutter/flutter#115185)

* 10dc566 Add drone_dimensions to devicelab_build_test. (flutter/flutter#115183)

* 0a5b531 b6e45ae35 extend const_finder to allow skipping particular classes (flutter/engine#37257) (flutter/flutter#115189)

* 0e9ee36 [web] Add `--local-web-sdk` flag and use precompiled platform kernels for dart2js and ddc (flutter/flutter#114639)

* 9e314ff Make FutureBuilder handle SynchronousFuture correctly, reland SynchronousFuture usage in test assets (flutter/flutter#115173)

* 673fd97 17d428e68 Roll Dart SDK from 2b6909ba35e5 to 190040da0bc8 (2 revisions) (flutter/engine#37536) (flutter/flutter#115191)

* edcdb00 Roll Flutter Engine from 17d428e688a9 to 38c4f1d78630 (2 revisions) (flutter/flutter#115192)

* 8772768 Roll Flutter Engine from 38c4f1d78630 to 1f0dd2c0f5bb (2 revisions) (flutter/flutter#115194)

* 6ec2bd0 M3 Segmented Button widget (flutter/flutter#113723)

* b7b6758 f3dfdf4cc Roll Skia from 3bbdd5bc54f2 to a727f7ac8a98 (1 revision) (flutter/engine#37544) (flutter/flutter#115196)

* 94e753d Roll Flutter Engine from f3dfdf4ccf38 to e3b3950f0fab (3 revisions) (flutter/flutter#115200)

* 61e927d e63c9443b [Impeller] Include the new primitive type in the pipeline hash (flutter/engine#37546) (flutter/flutter#115201)

* c05d887 Roll Flutter Engine from e63c9443bc04 to 9500d8c4a4ce (2 revisions) (flutter/flutter#115212)

* 1f82985 1c8c23754 Roll Fuchsia Linux SDK from xDY5B0-NZzq2idRNU... to IE4logHFoa8ZZQAw3... (flutter/engine#37554) (flutter/flutter#115214)

* 61b3d5a a0d8cd68c Add a limit to the Gaussian blur downsampling curve (flutter/engine#37550) (flutter/flutter#115217)

* 2bf64aa fd56b7ee8 Roll Fuchsia Mac SDK from j3vspnGJcQvIfsXXu... to iPqmEVwAbmYwPlh5a... (flutter/engine#37557) (flutter/flutter#115218)

* 53ab17d Roll Flutter Engine from fd56b7ee87f0 to 1ae285897eae (2 revisions) (flutter/flutter#115220)

* 4488166 d4e2188e9 [Impeller] Fix DrawPaint regression (flutter/engine#37561) (flutter/flutter#115222)

* bf906e6 2bdeaf7d7 Fix inertia cancel event on macOS Ventura (flutter/engine#37067) (flutter/flutter#115226)

* 1a19409 06c390470 Roll Fuchsia Mac SDK from iPqmEVwAbmYwPlh5a... to N-iOLgSVYYh_AfC7Q... (flutter/engine#37566) (flutter/flutter#115236)

* 1a460cf 54795869b Roll Skia from c0f87aed019b to 38edf6197aa9 (1 revision) (flutter/engine#37567) (flutter/flutter#115239)

* 8230ef5 Revert "[web] Add `--local-web-sdk` flag and use precompiled platform kernels for dart2js and ddc (#114639)" (flutter/flutter#115242)

* 8994920 7269f2f91 Roll Skia from 38edf6197aa9 to 0f515e97d535 (1 revision) (flutter/engine#37571) (flutter/flutter#115244)

* 7ac00f7 40b071c75 Roll Fuchsia Linux SDK from IE4logHFoa8ZZQAw3... to AE_mBWzdDqUvn4r1N... (flutter/engine#37572) (flutter/flutter#115247)

* fa94a3c b63e6cf55 [Impeller] dont include sampler offset in float offset (flutter/engine#37573) (flutter/flutter#115248)

* cb224d1 b7567b92c Roll Fuchsia Mac SDK from N-iOLgSVYYh_AfC7Q... to WYzUv6RnWjJpAiqYp... (flutter/engine#37575) (flutter/flutter#115252)

* d587fe4 a1b5507e5 Add playground to demonstrate mask blur problems (flutter/engine#37574) (flutter/flutter#115260)

* f5205b1 6f7447efa Roll Fuchsia Linux SDK from AE_mBWzdDqUvn4r1N... to dRHIZSishiboEHMdw... (flutter/engine#37577) (flutter/flutter#115266)

* 2c4051f b077c1c46 Roll Dart SDK from 996fe4d7ea9a to 45b7433f9015 (1 revision) (flutter/engine#37578) (flutter/flutter#115271)

* 0b5f3fd 743cec5ba Roll Skia from 0f515e97d535 to b2109e6bbbe7 (1 revision) (flutter/engine#37580) (flutter/flutter#115279)

* 80bcc3a 035313ae2 Roll Dart SDK from 45b7433f9015 to 7cbcf48157cf (1 revision) (flutter/engine#37582) (flutter/flutter#115281)

* fdd2fe4 036f8ea88 Roll Fuchsia Mac SDK from WYzUv6RnWjJpAiqYp... to XvXKIR_SSUfSyGwxe... (flutter/engine#37583) (flutter/flutter#115293)

* 436fb4c c290de693 Roll Skia from b2109e6bbbe7 to 2ad14e25f6f7 (7 revisions) (flutter/engine#37585) (flutter/flutter#115294)

* 2449907 Fixed the color curve issue (flutter/flutter#115188)

* 9359c25 1a79e8686 [macOS] Move to new update semantics embedder API (flutter/engine#37404) (flutter/flutter#115301)

* 59e1edc Roll Flutter Engine from 1a79e8686036 to 8c73ffff5b6f (2 revisions) (flutter/flutter#115302)

* f2ec1c4 42bc762b6 Roll Skia from 2ad14e25f6f7 to a434f9b69660 (11 revisions) (flutter/engine#37591) (flutter/flutter#115304)

* ea4e11d Fix test in preparation of the Dart VM dropping support for language versions < 2.12.0 (flutter/flutter#115176)

* a0a7b3a 14ecaeb91 [Impeller] error earlier on uint types (flutter/engine#37593) (flutter/flutter#115308)

* 2e51077 Do not strip architecture suffixes from host local-engine (flutter/flutter#115320)

* 8e3ea14 Incorrect rendering of `SnapshotWidget` (flutter/flutter#114400)

* 59ecc75 [flutter_tools] add uint compilation test (flutter/flutter#115317)

* 1aeb172 Roll Flutter Engine from 14ecaeb915e0 to 78ae2414003a (10 revisions) (flutter/flutter#115335)

* e391812 9dedab305 Roll Skia from b474a43dcc34 to 2cebc1ce363c (2 revisions) (flutter/engine#37612) (flutter/flutter#115338)

* 9d64a0f 31ee28684 Combine results of all the test batches. (flutter/engine#37610) (flutter/flutter#115340)

* e9c6212 [Impeller] Add shader include with FlutterFragCoord for use by FragmentProgram (flutter/flutter#114214)

* a27bb3c 06bd5a816 Roll Skia from 2cebc1ce363c to d758b240cad0 (1 revision) (flutter/engine#37614) (flutter/flutter#115341)

* abbffcc c6a513ecd Roll Fuchsia Mac SDK from XvXKIR_SSUfSyGwxe... to 32kfSm94FGtJJeUjg... (flutter/engine#37615) (flutter/flutter#115344)

* 0f56ed1 f01de9f6b Roll Skia from d758b240cad0 to 24523449b1b3 (1 revision) (flutter/engine#37616) (flutter/flutter#115346)

* 25d74e6 0b338ed86 Roll Dart SDK from 6f5478a58387 to 987faaf6d1d4 (2 revisions) (flutter/engine#37617) (flutter/flutter#115352)

* 1f28f99 721fbe111 Roll Skia from 24523449b1b3 to 4d519a8ba97a (3 revisions) (flutter/engine#37618) (flutter/flutter#115354)

* c37f255 [tools] Fix plugin_ffi template lint violation (flutter/flutter#115356)

* 3c3f136 b4fd07fa4 Roll Dart SDK from 987faaf6d1d4 to 42f87c0521f8 (1 revision) (flutter/engine#37619) (flutter/flutter#115362)

* 2ed5283 58495f077 [Impeller] Add debug names to additional VK objects (flutter/engine#37592) (flutter/flutter#115363)

* afafde6 7f74f34a4 Roll Fuchsia Linux SDK from B0OuUvWOY24LI1WoF... to agStiOtzmc9Fmw6gc... (flutter/engine#37621) (flutter/flutter#115365)

* af2ec91 Roll Plugins from 3ca3410 to e500884 (10 revisions) (flutter/flutter#115366)

* 3a298d0 Roll Flutter Engine from 7f74f34a408a to eead7b0d8656 (2 revisions) (flutter/flutter#115369)

* acf01eb 905862722 [dart] Run generate_sdk_version_file.py to be compatible with dart ch… (flutter/engine#37624) (flutter/flutter#115372)

* 95ace11 Include initial offset when using PlatformViewSurface (flutter/flutter#114103)

* 39a9ed5 Updated tokens to v0.141 (flutter/flutter#115298)

* ba47c29 216702f3d Roll Skia from 1991515dd191 to 826b3ea577f3 (4 revisions) (flutter/engine#37628) (flutter/flutter#115377)

* 2d77ac5 49f8326df Roll Skia from 826b3ea577f3 to 02e2101a75f7 (4 revisions) (flutter/engine#37631) (flutter/flutter#115385)

* 136b46b Hint text semantics to be excluded in a11y read out if textfield in not empty and label text is provided  (flutter/flutter#115010)

* 700de09 Change button and label text to sentence case for Material 3 (flutter/flutter#115187)

* b2b8391 Roll Flutter Engine from 49f8326df6f0 to 84cb1f833ac4 (3 revisions) (flutter/flutter#115387)

* 2c44f4a Remove dev branch reference from build ios-frameworks error (flutter/flutter#115166)

* 792eefe Roll Flutter Engine from 84cb1f833ac4 to af6e47f1d5c4 (4 revisions) (flutter/flutter#115395)

* 341a9b1 6d41b2ffb update Scene.toImageSync test to use proper bounds in the request (flutter/engine#37638) (flutter/flutter#115398)

* e66183d Bump github/codeql-action from 2.1.25 to 2.1.32 (flutter/flutter#115394)

* d0e5b2f Add a way to customize padding in BottomAppBar  (flutter/flutter#115175)

* 349d648 baad8f2c5 Roll Skia from 02e2101a75f7 to cfb6de45f39b (7 revisions) (flutter/engine#37640) (flutter/flutter#115399)

* 7d2b011 Fix logic error in `markNeedsPaint` (flutter/flutter#112735)

* 93c4b09 Add `RestorableEnumN<T>` and `RestorableEnum<T>` to restorable primitive types (flutter/flutter#115050)

* 2c1536a Create a main alias for master channel. (flutter/flutter#115388)

* bbb349b Roll Flutter Engine from baad8f2c553b to e56ed93faab5 (6 revisions) (flutter/flutter#115406)

* bacd770 c062f7ea7 Roll Skia from cfb6de45f39b to cdf8348e6fba (4 revisions) (flutter/engine#37649) (flutter/flutter#115407)

* 27ff6a5 Roll Flutter Engine from c062f7ea7195 to 03e9a97f8abe (3 revisions) (flutter/flutter#115410)

* 58728c6 Roll Flutter Engine from 03e9a97f8abe to 21a572e4e4d0 (2 revisions) (flutter/flutter#115411)

* e54c8a8e2 3e15c1925 Roll Dart SDK from 7163c9627d98 to c3f1b3642181 (2 revisions) (flutter/engine#37664) (flutter/flutter#115417)

* 484e09e Roll Flutter Engine from 3e15c192560f to 0241f18cbedf (2 revisions) (flutter/flutter#115423)

* 4fdaf7a Revert "Roll Flutter Engine from 3e15c192560f to 0241f18cbedf (2 revisions) (#115423)" (flutter/flutter#115456)

* 4301731 Make Flutter Driver actively wait for runnable isolate (flutter/flutter#113969)

* c940f31 Marks Mac_ios flavors_test_ios to be unflaky (flutter/flutter#115458)

* 243a830 Roll Flutter Engine from 3e15c192560f to 223e1f092dd5 (4 revisions) (flutter/flutter#115463)

* d7454d5 removing default values for [reporter] and [timeout] in flutter test (flutter/flutter#115160)

* a2233ea [flutter_tools] remove all body_might_complete_normally_catch_error ignores (flutter/flutter#115184)

* b5345ff d72164776 Revert "[Impeller] Refactor color source resolution to use explicit factory types (#37656)" (flutter/engine#37673) (flutter/flutter#115467)

* dcae424 [tools]build ipa validate template icon files (flutter/flutter#114841)
engine-flutter-autoroll added a commit to engine-flutter-autoroll/plugins that referenced this pull request Nov 17, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/plugins that referenced this pull request Nov 18, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/plugins that referenced this pull request Nov 18, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/plugins that referenced this pull request Nov 18, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/plugins that referenced this pull request Nov 18, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/plugins that referenced this pull request Nov 18, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/plugins that referenced this pull request Nov 18, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/plugins that referenced this pull request Nov 18, 2022
shogohida pushed a commit to shogohida/flutter that referenced this pull request Dec 7, 2022
* Update object.dart

* Update object.dart

* Update object.dart

* Update object.dart

* Update object.dart
gspencergoog pushed a commit to gspencergoog/flutter that referenced this pull request Jan 19, 2023
* Update object.dart

* Update object.dart

* Update object.dart

* Update object.dart

* Update object.dart
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
autosubmit Merge PR when tree becomes green via auto submit App framework flutter/packages/flutter repository. See also f: labels.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

markNeedsPaint has logical error
3 participants