1. 20 Jan, 2018 1 commit
    • Ian Hickson's avatar
      [H] Move the splitting of licenses to an isolate (#14160) · a29d723c
      Ian Hickson authored
      * Move the splitting of licenses to an isolate
      
      This improves (from horrific to terrible) the performance of the
      license screen. It also introduces a feature in the foundation layer
      to make using isolates for one-off computations easier.
      
      The real problem that remains with this, though, is that transfering
      data between isolates is a stop-the-world operation and can take an
      absurd amount of time (far more than a few milliseconds), so we still
      skip frames.
      
      More work thus remains to be done.
      
      * - Add profile instrumentation to the isolate compute() method
      - Add profile instrumentation to the LicensePage
      - Add profile instrumentation to the scheduleTask method
      - Make scheduleTask support returning a value
      - Make the license page builder logic use scheduled tasks so that it doesn't blow the frame budget
      a29d723c
  2. 19 Jan, 2018 1 commit
  3. 09 Jan, 2018 2 commits
  4. 14 Dec, 2017 1 commit
  5. 09 Dec, 2017 1 commit
  6. 17 Nov, 2017 1 commit
    • Greg Spencer's avatar
      Fix spelling errors in all the dartdocs. (#13061) · 0259be90
      Greg Spencer authored
      I got tired of drive-by spelling fixes, so I figured I'd just take care of them all at once.
      
      This only corrects errors in the dartdocs, not regular comments, and I skipped any sample code in the dartdocs. It doesn't touch any identifiers in the dartdocs either. No code changes, just comments.
      0259be90
  7. 21 Sep, 2017 1 commit
  8. 14 Sep, 2017 1 commit
  9. 31 Aug, 2017 1 commit
    • Devon Carew's avatar
      More frame events (#11747) · 8c36ccf5
      Devon Carew authored
      * Revert "Revert "fire service protocol events for frames (#11565)" (#11727)"
      
      This reverts commit f25e2f52.
      
      * move the postEvent() call into a separate method
      8c36ccf5
  10. 22 Aug, 2017 2 commits
  11. 04 Aug, 2017 1 commit
  12. 27 Jul, 2017 2 commits
  13. 21 Jul, 2017 1 commit
    • Ian Hickson's avatar
      Add documentation and clean up code. (#11330) · 8f56f6fd
      Ian Hickson authored
      Mainly, this adds documentation to members that were previously
      lacking documentation.
      
      It also adds a big block of documentation about improving performance
      of widgets.
      
      This also removes some references to package:collection and adds
      global setEquals and listEquals methods in foundation that we can use.
      (setEquals in particular should be much faster than the
      package:collection equivalent, though both should be faster as they
      avoid allocating new objects.) All remaining references now qualify
      the import so we know what our remaining dependencies are.
      
      Also lots of code reordering in Flutter driver to make the code
      consistent and apply the style guide more thoroughly.
      8f56f6fd
  14. 19 Jul, 2017 1 commit
  15. 21 Jun, 2017 3 commits
  16. 02 Jun, 2017 1 commit
    • Ian Hickson's avatar
      Sprinkle some mixin magic incantations (#10442) · 9eae8b83
      Ian Hickson authored
      This prevents some of our mixins from being subclassed.
      
      Also, move mixins to using 'extends' instead of 'implements' for
      future compatibility with Dart changes.
      
      Also, rename a class that had Mixin in the name but was not a mixin.
      9eae8b83
  17. 12 May, 2017 1 commit
  18. 05 May, 2017 1 commit
  19. 02 May, 2017 1 commit
    • Ian Hickson's avatar
      Flush microtasks after transient callbacks are run. (#9702) · e8c46927
      Ian Hickson authored
      This splits the frame pipeline into two, beginFrame and drawFrame.
      
      As part of making this change I added some debugging hooks that helped
      debug the issues that came up:
      
       * I added debugPrintScheduleFrameStacks which prints a stack whenever
         a frame is actually scheduled, so you can see why frames are being
         scheduled.
      
       * I added some toString output to EditableText and RawKeyboardListener.
      
       * I added a scheduler_tester.dart library for scheduler library tests.
      
       * I changed the test framework to flush microtasks before pumping.
      
       * Some asserts that had the old string literal form were replaced by
         asserts with messages.
      
      I also fixed a few subtle bugs that this uncovered:
      
       * setState() now calls `ensureVisualUpdate`, rather than
         `scheduleFrame`. This means that calling it from an
         AnimationController callback does not actually schedule an extra
         redundant frame as it used to.
      
       * I corrected some documentation.
      e8c46927
  20. 28 Apr, 2017 1 commit
  21. 19 Apr, 2017 1 commit
  22. 15 Apr, 2017 1 commit
    • Ian Hickson's avatar
      Support chaining await calls on controllers (#9389) · 14e728d0
      Ian Hickson authored
      With this patch, you can do:
      
      ```dart
         Future<Null> foo() async {
           try {
             await controller.forward().orCancel;
             await controller.reverse().orCancel;
             await controller.forward().orCancel;
           } on TickerCanceled {
             // did not complete
           }
         }
      ```
      
      ...in a State's async method, and so long as you dispose of the
      controller properly in your dispose, you'll have a nice way of doing
      animations in sequence without leaking the controller. try/finally
      works as well, if you need to allocate resources and discard them when
      canceled.
      
      Simultaneously, you can do:
      
      ```dart
         Future<Null> foo() async {
           await controller.forward().orCancel;
           await controller.reverse().orCancel;
           await controller.forward().orCancel;
         }
      ```
      
      ...and have the same effect, where the method will just silently hang
      (and get GC'ed) if the widget is disposed, without leaking anything,
      if you don't need to catch the controller being killed.
      
      And all this, without spurious errors for uncaught exceptions on
      controllers.
      14e728d0
  23. 07 Apr, 2017 1 commit
  24. 17 Mar, 2017 2 commits
  25. 15 Mar, 2017 1 commit
  26. 08 Mar, 2017 1 commit
  27. 04 Mar, 2017 1 commit
  28. 02 Feb, 2017 1 commit
  29. 13 Jan, 2017 1 commit
  30. 06 Jan, 2017 1 commit
  31. 29 Nov, 2016 1 commit
  32. 24 Nov, 2016 1 commit
  33. 19 Nov, 2016 1 commit
  34. 17 Nov, 2016 1 commit